Комментарии 17
Ощущение что это очень-очень-очень краткий обзор какой-то (Вашей) книги. Ссылку бы на неё. Если нет, то пишите книгу)
Я плохо разбираюсь в современной веб-разработке. Можете сказать, почему Django на Хабре критикуют, пишут что он сильно устарел по сравнению с якобы современными фреймворками и не годится для масштабируемых highload систем? И как вы к этому относитесь?
Я достаточно давно ковырял Rails, на тот момент они были сходи концепцией с Django — MVC, и др.
Я достаточно давно ковырял Rails, на тот момент они были сходи концепцией с Django — MVC, и др.
В тред призывается proofit404
Тяжело будет оправдывать Django без конкретных примеров критики, но я попробую предположить.
1. Django это не про SPA.
Сейчас наверное большая часть приложений пишется с каким-нибудь frontend фреймворком. Например, Angular, React или Vue. Django по умолчанию предлагает нам относительно медленный язык шаблонов, которые обрабатываются на сервере. Во-первых, можно взять Django Rest Framework (отдельный пакет) и Django будет отличным API сервисом backend для вашего SPA приложения. Во-вторых, если шаблонов на сервере достаточно для сложности приложения, но не устраивает скорость, можно взять Jinja2, который поддерживается из коробки. Он быстрый в силу компиляции в python bytecode.
2. Django это не про WebSockets.
Опять же огромное количество приложений хотят живой контент без постоянного хождения на сервер по HTTP. Уже несколько лет Django поддерживает Websockets и HTTP2 протоколы с помощью официального расширения Django Channels.
3. Django плохо масштабируется.
На самом деле у Django есть db router, который позволяет горизонтально масштабировать базу данных. Например, пользователей от А до Е и всё что с ними связано мы будет хранить на одном сервере, остальных на другом. У нас есть программный интерфейс чтобы этим самим управлять. Тоже самое есть для слоя кэширования.
Из хорошего от себя могу сказать что это фреймворк с адекватным project management. Есть LTS версии. Исправления безопасности выходят для нескольких актуальных версий сразу. Есть ясный и понятный процесс принятия нововведений Django Enhancement Proporans.
Надеюсь сумел угадать мифы.
1. Django это не про SPA.
Сейчас наверное большая часть приложений пишется с каким-нибудь frontend фреймворком. Например, Angular, React или Vue. Django по умолчанию предлагает нам относительно медленный язык шаблонов, которые обрабатываются на сервере. Во-первых, можно взять Django Rest Framework (отдельный пакет) и Django будет отличным API сервисом backend для вашего SPA приложения. Во-вторых, если шаблонов на сервере достаточно для сложности приложения, но не устраивает скорость, можно взять Jinja2, который поддерживается из коробки. Он быстрый в силу компиляции в python bytecode.
2. Django это не про WebSockets.
Опять же огромное количество приложений хотят живой контент без постоянного хождения на сервер по HTTP. Уже несколько лет Django поддерживает Websockets и HTTP2 протоколы с помощью официального расширения Django Channels.
3. Django плохо масштабируется.
На самом деле у Django есть db router, который позволяет горизонтально масштабировать базу данных. Например, пользователей от А до Е и всё что с ними связано мы будет хранить на одном сервере, остальных на другом. У нас есть программный интерфейс чтобы этим самим управлять. Тоже самое есть для слоя кэширования.
Из хорошего от себя могу сказать что это фреймворк с адекватным project management. Есть LTS версии. Исправления безопасности выходят для нескольких актуальных версий сразу. Есть ясный и понятный процесс принятия нововведений Django Enhancement Proporans.
Надеюсь сумел угадать мифы.
4) Джанго с более-менее сложным набором моделей стартует до двух секунд.
Java машина безотносительно любого фреймворка стартует сильно дольше. Плохой платформой это её ещё не делает. Можно где-то посмотреть сравнение времени старта с SQLAlchemy, Peewee и Orator на том же количестве моделей? О каком наборе моделей вообще идёт речь?
Ну так джава ж никогда и не позиционировалася как скриптовый язык.
Насколько я понял после профилирования, оно больше зависит от количества зависимостей между классами.
Ну вот последний проект. Полторы тысячи строк у меня в моделях всего. 81 класс. Время старта простого скрипта с django.setup() от 0.855 до 1.100. Проект нельзя считать особо крупным.
Насколько я понял после профилирования, оно больше зависит от количества зависимостей между классами.
Ну вот последний проект. Полторы тысячи строк у меня в моделях всего. 81 класс. Время старта простого скрипта с django.setup() от 0.855 до 1.100. Проект нельзя считать особо крупным.
Django разрабатывался как фреймворк для новостных сайтов, еще в те времена, когда основная логика фронтенда жила на сервере и все писали синхронный код. Scaffolding, шаблонизация, RSS, простейшее управление асетами. Все это было прям круто и актуально.
Современный веб живет на клиенте и фронтендные технологии драйваются JS сообществом. Здесь же server side rendering и изоморфный код. Какие-то решения портируются на питон, но инноваций не приносят и погоды не делают. Поэтому толку от джанги чуть, решение для фанатов.
- DRF
- Channels
- Если представления без состояния, то django-проект прекрасно вписывается в "12 факторов" и хорошо размазывается в кластер.
Критиковать фреймворк за то, что он не подходит для highload — это как критиковать семейный минивен за то, что он не болид F1 или не карьерный самосвал. В подавляющем большинстве случаев проекты не являются высоконагруженными и для них самым главным фактором является простота разработки и сопровождения.
А есть хорошие книги по джанго? Желательно не слишком начального уровня. Документацию на оф сайте не предлагать)
Вот хороший список ресурсов и книг: www.django-rest-framework.org/community/tutorials-and-resources
Из последнего есть подкаст исключительно о Django: djangochat.com
Из последнего есть подкаст исключительно о Django: djangochat.com
вот тут ещё может найтись полезное books.agiliq.com/en/latest
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Django under microscope