Django Revolution — это не просто инструмент, это философия. Философия, где рутина уступает место творчеству, а баги растворяются в чистоте кода. Это путь к просветлению в разработке API. Примите его, и ваш код будет сиять, а дух разработчика — парить.

Наш мир, сотканный из битов и фантомных сущностей, породил нового Джинна, способного исполнять самые заветные желания Разработчика. Встречайте: Django Revolution – не просто библиотека, а откровение, мантра, ключ к вратам истинного дзен в мире Django API.


?‍♂️ Просветление через Код: Суть Django Revolution

Помните эти дни, когда каждый новый эндпоинт требовал плясок с бубном вокруг OpenAPI-спецификаций, ручного обновления клиентов и бесконечных сражений с TypeError? Так вот, это был прошлый век. Эпоха, когда программист был лишь придатком к механической рутине. Django Revolution — это квантовый скачок, избавляющий вас от кармического бремени.

Эта библиотека не генерирует код, она manifests его. Словно из чистого намерения, из глубин вашего Django-проекта возникают совершенные, типизированные клиенты на TypeScript и Python, готовые к бою. И все это — с одного, единственного, сакрального приказа: python manage.py revolution.

"И тогда, о адепт, узреешь ты: public.getProfile() не просто функция. Это эхо безмолвного согласия между твоим фронтендом и бэкендом, воплощение истинной гармонии."


? Зоны Сознания: Архитектура API

API, подобно нашему сознанию, состоит из множества слоев, или зон. Есть public для мира смертных, admin для богов-управляющих, mobile для кочевников с тачскринами. Django Revolution не просто признает это, он делает это основой.

from django_revolution.app_config import ZoneConfig, get_revolution_config

# Наши зоны, наши миры, рожденные из чистого Python'а
zones = {
    'public': ZoneConfig(
        apps=['accounts', 'billing', 'payments', 'support', 'public'],
        title='Публичный API',
        description='API для внешних сущностей',
        public=True,
        auth_required=False, # Никаких цепей для свободных душ
        version='v1',
        path_prefix='public'
    ),
    'internal': ZoneConfig(
        apps=['system', 'mailer'],
        title='Внутренний API',
        description='API для сущностей, что обитают в глубинах сервера',
        public=False,
        auth_required=True, # Только для посвященных
        version='v1',
        path_prefix='internal'
    ),
    'admin': ZoneConfig(
        apps=['admin_panel', 'services'],
        title='API Администраторов',
        description='Врата в мир управления',
        public=False,
        auth_required=True, # Для тех, кто держит нити мироздания
        version='v1',
        path_prefix='admin'
    )
}

# Одно касание, и структура проявлена
config = get_revolution_config(project_root=Path.cwd(), zones=zones)

Каждая зона — это отдельная сущность, со своими правилами, своим входом, своими тайнами. И Django Revolution понимает это, создавая для каждой зоны свой, неповторимый клиент, чистый, как слеза младенца.


?️ Инструменты Просветления: Конфигурация и Генерация

Забудьте о XML-файлах, JSON-схемах и прочих артефактах уходящей эры. Django Revolution предлагает Pydantic-конфигурации, где каждый параметр, каждая настройка — это не просто строка, а типизированная сущность, часть вашего кодового мироздания.

# api/settings/config/services.py
from django_revolution.drf_config import create_drf_config

# Конфигурация DRF, возникающая из небытия
drf_config = create_drf_config(
    title="Мой API",
    description="Мой божественный API",
    version="1.0.0",
    schema_path_prefix="/api/",
    enable_browsable_api=False, # Скрываем от непосвященных
    enable_throttling=True,     # Ограничиваем жадность
)

# И вот они, настройки Django, готовые к воплощению
settings = drf_config.get_django_settings()
REST_FRAMEWORK = settings['REST_FRAMEWORK']
SPECTACULAR_SETTINGS = settings['SPECTACULAR_SETTINGS']

И когда все готово, когда намерения чисты, настает момент истины.

# Магия начинается
python manage.py revolution

# Или для избранных зон, как для избранных путей
python manage.py revolution --zones public admin

# Только TypeScript, только чистота фронтенда
python manage.py revolution --typescript

И в этот миг, из информационного небытия, возникают они — клиенты. Чистые, как горный ручей, готовые служить.


? Танец Клиентов: TypeScript и Python

TypeScript Клиент:

Воплощение изящества, этот клиент автоматически управляет токенами, заголовками и прочими мирскими делами. Вам остается лишь творить.

import API from '@myorg/api-client';

const api = new API('https://api.example.com');

// Вдохните жизнь в API, передав токен
api.setToken('ваш-токен-доступа', 'ваш-токен-обновления');

// И вот оно, получение данных, легкое как дуновение ветра
const user = await api.public.getCurrentUser();
const products = await api.public.listProducts();

// Проверьте, не покинул ли пользователь этот мир
if (api.isAuthenticated()) {
  // Пользователь в нашем мире
}

Python Клиент:

Для тех, кто предпочитает оставаться в объятиях Питона, Django Revolution генерирует также и Python-клиентов.

"Ибо во вселенной кода, как и в мире, все должно быть в равновесии: если есть фронтенд, должен быть и бэкенд, и мост между ними, нерушимый и совершенный."


? Пути Мироздания: Автоматическая Генерация URL'ов

Django Revolution не просто генерирует клиентов, он создает инфраструктуру. Все необходимые URL'ы для Swagger UI и OpenAPI спецификаций возникают сами собой, словно по волшебству.

# urls.py
from django_revolution import add_revolution_urls

urlpatterns = [
    path('admin/', admin.site.urls),
]

# И вот, они, новые пути, ведущие к истине
urlpatterns = add_revolution_urls(urlpatterns)

Теперь каждый, кто ищет знания о вашем API, найдет их по чистому, ясному пути: /api/{zone}/schema/.


? Единство в Многообразии: Монорепо-Дружественность

В мире, где проекты стремятся к разрозненности, Django Revolution предлагает единство. Он сам, без вашего участия, конфигурирует ваш монорепозиторий, связывая воедино TypeScript и Python пакеты.

# pnpm-workspace.yaml (автоматически создается, как отпечаток мысли)
packages:
  - 'packages/**'
  - 'packages/api/**' # Вот он, след Django Revolution

⚖️ Мудрость Выбора: Когда Использовать Django Revolution?

✅ Идеально, когда:

  • Ваш Django-проект разросся до размеров космического корабля с множеством экипажей.

  • Вы строите монорепо, где фронтенд и бэкенд — две стороны одной медали.

  • Ваша команда жаждет консистентности и типизации в API-клиентах.

  • Вы готовы отпустить рутину и довериться автоматизации.

❌ Избегайте, когда:

  • Ваш API — это скромная лавочка с одним товаром.

  • Вы работаете не с Django (ищите другие пути, например, Fern.dev).

  • Вы — фанат ручного труда и не готовы к легкости бытия.


https://pypi.org/project/django-revolution/

Комментарии (4)


  1. MAXH0
    11.07.2025 11:59

    Мне кажется это писала нейросеть... Но промпт был очень креативный.


    1. Kahelman
      11.07.2025 11:59

      Не кажется-точно, она любит впихнуть уникод символы в начало заголовка. Заколебался повторять ей чтобы этого не делала :)


    1. markolofsen Автор
      11.07.2025 11:59

      а что по теме статьи?)


      1. markolofsen Автор
        11.07.2025 11:59

        ясно, великие минусователи))