Система шаблонов или язык для Python (прежде всего HTML) - PullRequest
2 голосов
/ 16 февраля 2011

Я ищу зрелую, простую в использовании, мощную, автономную, "красивую" систему шаблонов / язык для Python.В первую очередь меня интересует генерация (статического) HTML из источников HTML (поэтому Markdown / RST / Textile не имеют значения).

Кажется, есть выбор вариантов (вики Python имеют aочень длинный список ), что делает выбор довольно сложным.Ниже перечислены языки, о которых я слышал или использовал, в зависимости от уровня моего личного знакомства.

Не стесняйтесь превратить это в вики сообщества, если есть интерес.

Django

Плюсы:

  • Знакомый и простой синтаксис, если вы использовали Django.
  • Удивительная документация Django.
  • Большое разделениеиз логики.
  • Активно поддерживается и поддерживается.

Минусы:

  • На самом деле не предназначен для использования в автономном режиме.Я даже не знаю, работает ли загрузка библиотек тегов шаблонов, если у вас нет INSTALLED_APPS.
  • . Привязка к расписанию всего проекта Django делает автономное использование размытым.
  • Возможно, чрезмерно непифонический синтаксис.

Jinja2

Плюсы:

  • Синтаксис по сути Django ++
  • Настраиваемый синтаксис
  • В хорошем состоянии
  • Хорошая документация

Генши

  • XHTML: синтаксис ish (хорошо или плохо?)
  • Поэтому заблокирован для генерации вывода на основе XML?
  • Можно использовать Python непосредственно в шаблонах (<?python ... ?>)

Мако

Плюсы:

  • При поддержке Pylons, развернутые на таких сайтах, как reddit.com

Минусы:

  • Синтаксис (с первого взгляда) кажется мне несколько неровным.<%, % и $?

Некоторые вещи, которые, на мой взгляд, заслуживают внимания, также:

  • Совместимость с Python 3
  • Поддержка редактора (есть ли поддерживаемые пакеты TextMate, например?)

Признаюсь, я ничего не знаю о следующем, за исключением того, что у них ужасные сайты.

Гепард

StringTemplate

1 Ответ

4 голосов
/ 27 февраля 2011

Извините, у вас еще нет представителя, чтобы оставлять комментарии, поэтому я оставлю это как ответ.

Я использовал только django и mako.Похоже, что основное различие между этими двумя языками шаблонов заключается в том, что Django разработан так, как будто вы не можете доверять дизайнерам шаблонов.Вы можете увидеть это в том, как они ограничивают код, который вам разрешено использовать в шаблонах, и они не допускают код Python внутри шаблона.(Можно обсудить, принадлежит ли код Python к шаблону или нет).Для моих проектов я был и программистом, и дизайнером, поэтому Django встал у меня на пути.

Mako просто разбирает шаблон на блоки текста и кода Python с некоторыми вспомогательными функциями.Это означает, что код Мако намного меньше, и, кажется, он учится намного быстрее, чем Django, если вы уже знакомы с Python.

Например: единственный способ найти переменную в django, который я смог найти, это использовать блок with:

{% with total=business.employees.count %}
    {{ total }} 
{% endwith %}

(Обратите внимание, что business.employees.count на самом деле является функцией (business.employees.count ())).

В то время как эквивалентный код в Мако будет:

<% total = business.employees.count() %>
${total}

Гуру Джанго: Не стесняйтесь поправлять меня.У меня ограниченный опыт, но именно поэтому я выключил Django для Mako.

Это, кажется, довольно приличное базовое сравнение различных систем шаблонов, если вы просто хотите получить представление о синтаксисе:http://catherinedevlin.pythoneers.com/cookoff.html

...