Переосмысляем структуру Django-приложений
В этой статье мы рассказываем о next.dj — open-source фреймворке на базе Django, созданном разработчиком из Evrone, и о том, как проект помогает сократить рутину в разработке.
Рано или поздно у каждого разработчика возникает мысль: «Неужели нет способа сделать это проще?»
Для Павла Куценко, программиста из Evrone, эта мысль появилась во время работы над небольшим личным проектом, тайм-трекером на Django. Ничего необычного, просто сайд-проект, чтобы поэкспериментировать, переключиться после работы и попробовать новые идеи.
Но в процессе разработки Павел снова и снова сталкивался с одной и той же проблемой: слишком много рутины.
Во многом это было связано с экспериментами с htmx — для разных состояний одного и того же компонента приходилось создавать отдельные endpoints, шаблоны и обработчики.
Чтобы реализовать даже небольшую фичу, обычно нужно:
- написать view
- зарегистрировать его в
urls.py - создать шаблон
- добавить JavaScript для частичных обновлений
- подключить формы и валидацию
- связать всё это вручную
Например, для таймера на странице сначала отображается выключенный секундомер (один шаблон и обработчик), затем после нажатия кнопки, включённый (другой шаблон и обработчик). Для остановки нужен ещё один.
Django — мощный и гибкий фреймворк. Но иногда складывается ощущение, что одни и те же структурные шаги приходится повторять снова и снова.
Со временем это ощущение подтолкнуло Павла к эксперименту. Так появился next.dj.
От сайд-проекта к фреймворку
Работа над next.dj началась летом 2025 года. Сначала это была просто мысль: попробовать реализовать в Django файловую маршрутизацию — по аналогии с тем, как это устроено во фронтенд-фреймворках вроде Next.js.
Идея была простая: чтобы вместо ручной регистрации URL достаточно было просто создать файл.
В простейшем варианте страницу можно описать прямо в page.py. В реальных проектах шаблон обычно выносится в отдельный файл template.djx, который автоматически используется как шаблон страницы.
# pages/home/page.py
template = """
Welcome to next.dj!
Hello, {{ name }}!
"""
@context
def get_name(request):
return {"name": "World"}
И всё, страница доступна по адресу /home/. Без дополнительной регистрации URL, без разбросанной конфигурации.
Под капотом это по-прежнему Django, но с другой структурой и философией.
Что такое next.dj и кому он будет полезен?
С помощью next.dj можно делать всё то же, что обычно делают на Django: SaaS-сервисы, дашборды, внутренние системы, MVP, админ-панели или полноценные веб-приложения. Меняется не тип проекта, а то, как организован код.
В обычной разработке логика часто распределена по разным частям проекта: отдельно view, отдельно маршруты, отдельно шаблоны и обработка форм. В next.dj эти элементы находятся ближе друг к другу. Страница описывается в одном месте вместе с шаблоном и логикой, а маршруты формируются автоматически на основе структуры файлов.
Такой подход упрощает разработку и уменьшает количество рутинных действий. Во многих случаях интерфейс можно реализовать без отдельного frontend-слоя, а взаимодействие между Python и JavaScript уже скрыто внутри фреймворка.
В результате при добавлении новой функции приходится делать меньше лишних шагов и реже переключаться между разными файлами.
next.dj будет особенно полезен тем, кто:
- регулярно работает с Django и хочет более аккуратную структуру проекта;
- быстро собирает продукты и ценит простоту и скорость разработки;
- предпочитает оставаться в Python, не разделяя проект на отдельный backend и React-фронтенд;
- интересуется современными подходами вроде файловой маршрутизации.
Почему «Next»?
В названии проекта заложена простая идея: это Django, но с “шагом вперёд”. Next.dj не пытается заменить или конкурировать с Django. Это надстройка, которая предлагает более удобную организацию кода.
Сейчас в next.dj уже есть:
- файловая маршрутизация;
- шаблоны DJX;
- управление контекстом;
- формы со встроенной валидацией и CSRF-защитой;
- механизм dependency injection для явной передачи только нужных параметров.
В марте 2026 у проекта вышли версии 0.4.0 и 0.4.1.
Одним из ключевых обновлений стала система компонентов. Теперь переиспользуемые UI-блоки можно описывать в одном месте, шаблон и Python-логика находятся рядом, а не разбросаны по проекту. Поддерживаются пропсы, слоты и dependency injection.
Также появилась глобальная конфигурация NEXT_FRAMEWORK по аналогии с Django REST Framework. Она позволяет управлять настройками фреймворка в одном месте, а часть core уже переписана и покрыта тестами.
Долгосрочное видение: Rust
Сейчас next.dj полностью работает поверх Django. В будущем Павел хочет поэкспериментировать с использованием быстрых Rust-based веб-серверов и частично перенести некоторые компоненты на Rust.
Полного перехода на Rust не планируется — сам фреймворк по-прежнему остаётся Python-ориентированным. Однако отдельные части системы могут быть реализованы на Rust, если это позволит повысить производительность.
Присоединяйтесь к сообществу
next.dj — это наш вклад в open-source и сообщество разработчиков.
Хотите улучшить документацию, добавить пример, попробовать новую идею или доработать функциональность? Проект открыт для ваших предложений.
Если вам знакомо ощущение, что в Django слишком много повторяющихся шагов, возможно, next.dj станет для вас интересным инструментом. Попробуйте, посмотрите, как он устроен, и поделитесь своими мыслями.
Проект развивается, и его будущее во многом зависит от тех, кто решит поучаствовать!