Зачем нужен новый REST API для Django?

Последний месяц я крайне увлечен созданием https://github.com/wemake-services/django-modern-rest (Кстати, у нас уже >200 звезд и 26 контрибьюторов при 0 релизов)

Ключевой вопрос – зачем? Что будет нового?

Во-первых, я крайне сильно люблю Django. Основная причина – под него есть буквально любые библиотеки. Все то, что в FastAPI нужно героически писать руками – в джанге уже давно есть и работает. Но, есть несколько основных причин, почему люди думают, что не любят джангу: 1. DRF, тут без лишних слов – он ужасен. Нет типизации, нет async, очень сложно работать с ним в сложных случаях 2. Многие считают, что джанга - сложная. Однако, она как FastAPI или Litestar может спокойно уместиться в один файл: https://django-modern-rest.readthedocs.io/en/latest/pages/micro-framework.html 3. Есть критика за архитектуру: тут нечего особо даже комментировать. На любом фреймворке можно писать хорошо, на любом можно писать плохо. Слой фреймворка очень тонкий 4. Медленный. А вот тут остановимся подробнее.

На скринах выше можно сравнить, что с django-modern-rest, без нескольких будущих оптимизаций (привет cython и rust!), голая джанга начинает выглядеть не так уж и медленнее FastAPI: бенчи.

Во-вторых, Django на длительный срок был в плену DRF. Который морально устарел еще в середине десятых. Потом появилась django-ninja, которая хоть и намного лучше, но все равно не решает главную задачу: интеграция с существующими тулами. Конечно, если затащить FastAPI дизайн в чужой мир, то ничего не будет нормально работать 🌚️️

Вот такие проблемы мы решаем.

Одной строкой: - Супер строгая OpenAPI схема и валидация при разработке, что мы ее соблюдаем - Полная типизация всего - Нормальный способ создания АПИ, без god-functions a-la FastAPI - async без sync_to_async - Быстро: msgspec для парсинга json (самый быстрый способ в питоне), практически 0 работы в рантайме (все делаем при импорте), оптимизации роутера (быстрее дефолтного в 51 раз) - Пидантик, msgspec, или любой другой способ выражать модели. Хоть adaptix - Полная поддержка всего существующего в Django. От декораторов до миддлварь (с полной валидацией и OpenAPI схемой!) - OpenAPI схема из коробки - Удобное тестирование с polyfactory - property-based тесты вашего АПИ одной командой благодаря schemathesis

Что еще будет: - RSGI (да, на #rust скорее всего) под granian, в теории можем побить FastAPI после такого - SSE с автоматической OpenAPI спекой и умной валидацией схемы - JWT или любая другая аутентификация - Какие-то части (скорее всего валидацию) мы компильнем cython, чтобы было еще быстрее

Modern? Modern! Осталось дождаться. Релиз скоро! И еще скоро будут несколько новых видео.

Мы регулярно постим задачки в @opensource_findings_python, так что можно нам помочь. А если кто хочет мне закинуть на развитие опенсорса (за написание 32500 строк кода за 2 недели), то мой бусти открыт: https://boosty.to/sobolevn Ну и звезды можно ставить, конечно же. Там посмотрите, какие люди нас уже советуют.

Большое спасибо Александру, Алексею, Роману, Максиму и всем остальным за неоценимую помощь. Пацаны, без вас никак! Лучшее сообщество!

Обсуждение: а чего бы вам хотелось в modern rest фреймворке? Чего сильно не хватает сейчас?


В этом посте были ссылки, но мы их удалили по правилам Сетки

Зачем нужен новый REST API для Django?
Последний месяц я крайне увлечен созданием https://github | Сетка — социальная сеть от hh.ru Зачем нужен новый REST API для Django?
Последний месяц я крайне увлечен созданием https://github | Сетка — социальная сеть от hh.ru