Я добавляю простой веб-интерфейс к уже существующей части программного обеспечения; web.py подходит к заданию правильно и что я использую. Теперь я изучаю, какой шаблонный движок использовать и сводится к двум альтернативам: либо с помощью web.py собственного Templator, либо с помощью Jinja2.
У меня уже есть работающие в приложении, и я пишу несколько простых шаблонов для их изучения. Должен сказать, что я нахожу, что Templator легче читать, вероятно, из-за того, что я программист, а не веб-дизайнер (кто, вероятно, найдет Jinja проще?).
Хотя я только создаю (несовместимые;) уродливые HTML-страницы сейчас, я также использую механизм шаблонов для создания писем и старых старых текстовых файлов.
Оба программного обеспечения "достаточно быстро" для какой-либо практической цели, я хотел бы спросить людей, которые широко использовали тот или другой или оба, что является их сильными и слабыми сторонами в областях простоты использования, чистоты кода, гибкости и т.д.,
Взяв быстрый взгляд на Templator (который я никогда не использовал) и сравнивая его с Jinja2 (который я использовал несколько экстенсивно), я бы сказал, что эти два довольно похожи... но Templator ближе к Mako, чем к Jinja,
Мако и Джинджа поддерживают:
Хотя Mako и Templator поддерживают:
Все три поддержки:
Templator поддерживает на странную вещь, что я не верю ни в Jinja или Mako:
Jinja принимает код шаблона и компилирует его в байт-код Python, но он делает это для всего, вместо того, чтобы передавать строки интерпретатору Python для использования safe_eval
. Таким образом, Jinja2 теоретически невосприимчив к определенным типам атак на уровне шаблона (но когда у вас есть враждебный вклад от ваших шаблонов, у вас обычно возникает гораздо большая проблема).
Что касается остальной части, все это в значительной степени зависит от вашего предпочтения синтаксиса.
Что мне было трудно в Templetor, это наследование шаблонов. Вместо простой концепции блоков, которая присутствует, например, в Jinja2, вам нужно выбрать базовый шаблон один раз в коде приложения, а затем выполнить настройку weird атрибута в фактическом шаблоне, обратившись к нему в базовом шаблоне. Тем не менее у вас проблемы, если вам нужно больше, чем один "большой" блок, такой как тело страницы.
Реальные блоки намного элегантнее, а гибкость "реального" Python Templetor действительно не нужна, хотя, вероятно, это может быть небезопасно.