Переосмысляем структуру Django-приложений

В этой статье мы рассказываем о next.dj — open-source фреймворке на базе Django, созданном разработчиком из Evrone, и о том, как проект помогает сократить рутину в разработке.

21 апреля 2026

Рано или поздно у каждого разработчика возникает мысль: «Неужели нет способа сделать это проще?»

Для Павла Куценко, программиста из 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 станет для вас интересным инструментом. Попробуйте, посмотрите, как он устроен, и поделитесь своими мыслями.

Проект развивается, и его будущее во многом зависит от тех, кто решит поучаствовать!

Будем на связи
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.