Pull to refresh

Comments 17

Ощущение что это очень-очень-очень краткий обзор какой-то (Вашей) книги. Ссылку бы на неё. Если нет, то пишите книгу)
До книги ещё очень-очень далеко :)
Я плохо разбираюсь в современной веб-разработке. Можете сказать, почему Django на Хабре критикуют, пишут что он сильно устарел по сравнению с якобы современными фреймворками и не годится для масштабируемых highload систем? И как вы к этому относитесь?
Я достаточно давно ковырял Rails, на тот момент они были сходи концепцией с Django — MVC, и др.
Тяжело будет оправдывать 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.

Надеюсь сумел угадать мифы.
Java машина безотносительно любого фреймворка стартует сильно дольше. Плохой платформой это её ещё не делает. Можно где-то посмотреть сравнение времени старта с SQLAlchemy, Peewee и Orator на том же количестве моделей? О каком наборе моделей вообще идёт речь?
Ну так джава ж никогда и не позиционировалася как скриптовый язык.

Насколько я понял после профилирования, оно больше зависит от количества зависимостей между классами.

Ну вот последний проект. Полторы тысячи строк у меня в моделях всего. 81 класс. Время старта простого скрипта с django.setup() от 0.855 до 1.100. Проект нельзя считать особо крупным.

Django разрабатывался как фреймворк для новостных сайтов, еще в те времена, когда основная логика фронтенда жила на сервере и все писали синхронный код. Scaffolding, шаблонизация, RSS, простейшее управление асетами. Все это было прям круто и актуально.


Современный веб живет на клиенте и фронтендные технологии драйваются JS сообществом. Здесь же server side rendering и изоморфный код. Какие-то решения портируются на питон, но инноваций не приносят и погоды не делают. Поэтому толку от джанги чуть, решение для фанатов.

Говорите как фанат чего-то другого. Все фронтенд технологии, кроме изоморфного подхода, прекрасно будут жить рядом с Django. Дельные инновации как раз таки портируются не только на питон и погоду делают в целом везде.
Критиковать фреймворк за то, что он не подходит для highload — это как критиковать семейный минивен за то, что он не болид F1 или не карьерный самосвал. В подавляющем большинстве случаев проекты не являются высоконагруженными и для них самым главным фактором является простота разработки и сопровождения.
Прекрасно подходит для hi-load.
Не весь hi-load является именно web high-load`ом.
А есть хорошие книги по джанго? Желательно не слишком начального уровня. Документацию на оф сайте не предлагать)
Sign up to leave a comment.