А может лучше уж сразу, полностью заменить язык шаблонов в джанго на php? Передавать контекст, обязательно подключить какой-либо акселератор — мы выйдем на новые горизонты!
У джанго совершенно убогие шаблоны, ни тебе доступа к БД, ни сокетов. Поэтому я считаю, что вы молодец. Все эти жалкие попытки в виде haml, jinja2, mako и mint явно были заблуждением.
пользовался jinja2 в tipfy. если подумать и вспомнить, то наверное у меня больше претензий к костыляминтеграции их — куча всякой херни вроде некомпилящихся шаблонов при наличии кастомного фильтра, потомучто он не подгружен из скрипта компиляции, а захукаться и подгрузить нельзя.
в документации черт ногу сломит — вроде бы все есть, но пока нашел, как макросы делаются, чуть не заеустал.
ну и отладка скомпилированных шаблонов — тот еще праздник души, традиционно.
разумеется, это все преодолимо. еще что-то мне там нервы портило знатно, но вспомнить не могу.
непоспоришь, доки у жинжи несколько разрозненые.
но сам по себе весьма приятный шаблонизатор.
и к кастомизации много возможностей.
я к нему ещё параметрические дефайны както приделывал.
Если следовать MVC, а не городить логику во вьювере то больше чем jinja2 имхо не понадобится, доступ к БД из шаблонизатора входит чуть более чем полностью в разрез с архитектурой MVC django.
Если следовать MVC джанго, то в шаблоны надо передавать готовые куски html-я, чтобы не дай бог какую логику в шаблоны не затянуло. И логика представления ложится ровным слоем в templatetags и во вьюхах.
Шаблоны джанго это первое, что нужно сразу же от нее отрывать. Потом мы переходим к ORM, попадаем в засаду, когда заказчик просит сложный отчетик, отрываем и пользуем sqlalchemy.
Потом мы понимаем, что от джанги собственно ничего не осталось, и можно переходить к использованию Flask например.
Джанго и есть попытка слепить все в один проект. Синдром NIH, крайне урезанные инструменты, шаг влево вправо и начинаются костыльные кошмарики.
Любой проект стартует ни разу не специфическим. Обычно начинается с того — ну тут пару страничек, тут простенько, ну и пока можно еще немного админкой попользоваться стандартной.
Проблема в том, что любой проект заказчик хочет потом улучшить. В один прекрасный день вы упираетесь в то, что джанга она такая — для простеньких проектов, проект бывает таким в начале своей жизни. Но куда вы потом от нее денетесь? Весь проект перепишете? Заполните ее raw sql вставками? А тесты в sqlite уже пускать не сможете, БД не смените.
Я долго могу каждый пункт разбирать, и пояснять почему сделано криво, и где лучше. Но вообще клуб django-haters он большой, где то были уже материалы в сети с подобным разбором.
Ну а порекомендуйте что-то, что вы используете для нетривиальных проектов в поздней стадии развития. (Twisted?)
Не холивара ради, мне действительно интересно.
Нет, ну что вы, Twisted он не для того. Строить на twisted web проект вообще гибло. На Twisted надо писать какой-нибудь хитрый демон который что-то там распихивает из одного сокета в другой, или SIP-прокси с биллингом. В общем что-то сетевое под большой поток пакетов.
К поздней стадии развития проект уже придет с какой-то конкретной технологией. Поэтому пространства для маневра в таких проектах немного. Какие-то революции там за один день не свершаются, если вообще стоят денег.
Для web лично я возьму Flask, sqlalchemy, jinja2. С sqlalchemy SQL вам придется писать, только если вы его запихнете в хранимку на сервере. С jinja2 логика представления останется в шаблонах. Flask гибок, и я не думаю, что упрусь куда-то при его использовании. Хотя тут нужно больше опыта, на данный момент Flask все таки молод. С другой стороны его стиль мне уже хорошо знаком. В родственном Flask фреймворке Svarga я никуда не уткнулся на довольно большом проекте, и многие вещи, с которыми на джанго приходилось бодаться, я там вообще не замечая решал походя. Кстати из Svarga вышла Amalgam, тоже неплохо можно внедрить себе.
В общем в моем личном списке Django не значится как инструмент номер один. Скорее как legacy.
Я вот не понимаю. Если мне нужно развлечься — я пишу на Джанге. Если нужно, чтобы было быстро и надежно — на плюсах. Если тупо и кондово, и чтобы потом легко найти разработчика на поддержку — на ПХП.
Каждый язык, технология, фреймворк — для своей цели. И для одной цели можно выбрать несколько решений, причем часто это вопрос вкуса (вот меня прет Джанго и Питон, а Руби на Рельсах я просто уважаю, но выбрал не его).
А тут — блевать их тянет, бля. Пипец, просто. А меня блевать тянет от тех, кто хорошо знает одну технологию и остальные из-за этого презирает, потому что писать на них нормально не умеет. А то говнокодеры есть и на питоне, и на яве — велкам ту говнокод.ру или thedailywtf, убедиться в этом.
Автор молодец. Написал велосипед, получил опыт, и неплохо поржал, думаю, над своим приколом. Ждем теперь пхп в перле, яве и плюсах.
django-php: PHP в шаблонах Django