Подтвердить что ты не робот

Лучшая библиотека шаблонов Python для облегчения генерации кода

Вместо того, чтобы на следующий день (или год) читать о них все, есть ли какие-либо предложения по шаблонам двигателей, которые я должен изучить более подробно?

4b9b3361

Ответ 1

Лучшее предложение: попробуйте их все. Это не займет много времени.

Мой любимый: Jinja2 (на милю)

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

Ответ 2

Если вы создаете код, вы можете найти Cog полезный - он специально для генерации кода, а не как общеприменимый язык шаблонов.

Ответ 3

Самая важная проблема заключается в том, можете ли вы жить с синтаксисом, требуемым шаблонами. Вторая и третья (в зависимости от ваших потребностей приложения) - это скорость и простота распространения.

Я посмотрел на всех из них, но единственный синтаксис, который я мог выдержать, был Jinja. Преимущество Jinja заключается в поддержке множества конструкций Python, поэтому очень легко добавлять фрагменты функциональности к шаблонам по мере необходимости, без кодирования специальных тегов. Большинство запросов, требующих тегов в других системах шаблонов, обрабатываются макросами в Jinja.

Конечно, если вы ищете что-то легкое и быстрое, трудно выполнить API-интерфейс для шаблонов Python на основном языке.

Ответ 4

Обновление: Kid, похоже, сменил Genshi.

Я использовал Kid, и я думаю, что это одна из старых систем. Я нашел, что он очень прочный, стабильный и надежный. Он основан на тегах, поэтому он хорош для работы с XML/HTML. Интересно, что функции шаблона выполняются как HTML-атрибуты, а не специальные блоки, т.е. {%...%}. Тем не менее, некоторые аспекты этого (особенно способ, которым он "включает" ) могут стать довольно неприятными. Он также, кажется, не разрабатывается активно или вообще не существует.

Стоит посмотреть, хотите ли вы что-то, что было вокруг какое-то время, и стало довольно стабильным. Если вы хотите что-то более новое, я слышал хорошие вещи как о Генши, так и о Джиндже.

Ответ 5

Мне нравится Clearsilver, потому что он работает с несколькими разными языками и строго обеспечивает разделение между данными и презентацией. Я ранее использовал Cheetah, и хотя это было довольно хорошо, мне не нравилось работать с тем, что иногда казалось ограниченной формой Python.

Ответ 6

Если вы работаете с X [HT] ML, одна из систем шаблонов, основанных на тегах, которая может оставить вас с хорошо сформированными шаблонами, является хорошим шагом. Я использую PXTL, FWIW. (Он может создавать другие форматы, но если ваш упор не на XML или HTML, это не было бы разумным выбором.)

Я испытываю сильную неприязнь к системам шаблонов, которые утверждают, что "помогают вам разделить бизнес-логику и презентацию", ограничивая выражения их собственным Маленьким языком. Они, похоже, не понимают, что существует такая вещь, как "логика представления", и она может иногда становиться достаточно сложной, чтобы использовать настоящий язык, такой как Python для его запуска. Если вы выпустите свою логику презентации в приложение с бизнес-логикой, это не победа. Избегайте!

(Ограниченное выражение для отдельного мини-языкового подхода имело некоторый смысл в JSP 'EL, так как Java слишком досадно многословно для использования в библиотеке шаблонов. Но у нас есть Python! Он идеально подходит для написания выражений в шаблонах, поскольку это, вырезать функциональность и заставить пользователя изучать новый новый язык, ничего не получает.)

Ответ 7

Если вам нужен очень легкий вариант, попробуйте храм. Это всего лишь 80 строк кода в одном модуле. Посмотрите здесь и здесь (было опубликовано в блоге). Я думаю, что это умное и очень целенаправленное решение, если возможностей вам достаточно.