solovyov.net

Тёмная сторона Django

· · django

В любом случае, когда используешь инструмент длительное время, то некоторые вещи в нём начинают раздражать. А так как Джангу я использую вот уже больше двух лет, то некоторые вещи меня раздражают очень порядочно, так что этот пост будет именно о том, что меня раздражает.

Как ни странно, но наличие DJANGO_SETTINGS_MODULE в окружении не сильно напрягает. Такая себе особенность, мне жить особенно не мешает, ну и пускай себе. Такой себе пассивный раздражитель.

А есть активный - темплейты. Это просто жуть, страшный монстр откуда-то из глубин Тартара, прямо орёл, клюющий печень Прометею. Про это недавно писал Армин, а меня серьёзно раздражать это начало где-то с год назад, до этого я относился спокойно. Рендеринг темплейтов не даёт заниматься профайлингом нормально - он закрывает всё своими вызовами. Контекст - жуть из преисподней - и игры с ним переполнены магией сверх меры. Сложные темплейттеги похожи на осьминогов - концы торчат во все стороны и, если подойти достаточно близко, зохавать человека ему не проблема.

Обработка Request и Response тоже жутковата. Там простой и понятный для меня код, если не вдаваться во все детали. И его просто много.

QuerySet, даже после рефакторинга - зло. До рефакторинга это было вообще что-то невообразимое.

К чему я всё это написал? Да просто Джанга порядочно закрывает мне разные возможности при разработке Byteflow. Например, как бы так поприятнее организовать плагины, не копируя половины функциональности джанги? Она рассчитана на pluggable apps, и это хорошо, но это ещё не всё.

Но почему я ей до сих пор пользуюсь? Ответ стар как мир - ничего лучше я не видел. RoR - это вообще сам Тартар, Pylons - это его младший брат, и оба переполнены магией выше крыши не только внутри, но и в приложениях. Этим джанга хороша - несмотря на то, что там внутри происходит, все приложения очень часто абсолютно прозрачны и просты для понимания. Главное - не пытаться сделать то, чего Джанга не позволяет. Она этого не любит.

Хорошо, что таких вещей не очень много. Но меня они всё-таки беспокоят.

P.S. Всё, пятиминутка ненависти завершена. :-)