Когда использовать шаблонизатор в Python? - PullRequest
5 голосов
/ 23 июня 2009

Будучи новичком в Python и, в основном, имел опыт написания сценариев для автоматизации задач, связанных с системным администрированием, у меня нет особого смысла в том, где использовать определенные инструменты.

Но я очень заинтересован в развитии инстинктов использования конкретных инструментов / методов.

Я видел много упоминаний о шаблонизаторах, включая zedshaw , говорящих об использовании Jinja2 в Lamson

Поэтому я решил попросить сообщество дать мне несколько советов относительно того, где / когда я мог бы знать, что мне следует рассмотреть вопрос об использовании шаблонизатора, например Jinja2 , Genshi Мако и со

Ответы [ 3 ]

7 голосов
/ 23 июня 2009

Как говорит @mikem, шаблоны помогают генерировать любую форму вывода в нужных условиях. По сути, первой значимой вещью, которую я когда-либо писал в Python, была система шаблонов - YAPTU , для еще одной утилиты шаблонов Python - и это было 8+ лет назад, до того, как другие хорошие такие системы существовали ... вскоре после того, как я удостоился чести улучшить его не менее, чем Питером Норвигом (см. здесь ), и теперь он имеет почти 2000 обращений в поисковых системах; -).

Современные движки шаблонов во многих отношениях намного лучше (хотя большинство из них довольно специализированы, особенно для вывода HTML), но основная идея остается - зачем беспокоиться о множестве операторов print и жестко закодированных строках в коде Python когда еще проще вывести строки в редактируемые файлы шаблонов? Если вы когда-нибудь захотите (например) иметь возможность выводить текст на французском, английском или итальянском языках (это было первоначальной мотивацией YAPTU во время интенсивных выходных, когда я впервые познакомился с Python ...! -), возможность просто получить ваши шаблоны из нужной директории (где текст соответствующим образом переведен) сделает все НАСТОЛЬКО проще !!!

По сути, я думаю, что система шаблонов, скорее всего, не будет хорошей идеей, когда вы выводите текстовые вещи. Я использовал YAPTU или его адаптации для плавного переключения, например, между JSON, XML и читаемым человеком (HTML, собственно) выводом; действительно хорошая система шаблонов, в наше время, должна быть в состоянии превзойти предел «text-ish» и выводить в protobuf или другом двоичном формате сериализации.

Какая система шаблонов лучше всего полностью зависит от вашей конкретной ситуации - в любом случае, я бы изучил (и поэкспериментировал) с некоторыми из них. Некоторые предназначены для случаев, когда дизайнеры пользовательского интерфейса (которые не могут программировать) должны их редактировать, другие только для программиста; многие специализируются на HTML, некоторые на XML, другие более общие; и т. д. и т. д. Но НЕКОТОРЫЙ один из них (или ваш собственный, еще один! -) наверняка будет лучше, чем группа print s! -)

2 голосов
/ 23 июня 2009

Шаблонизатор работает над шаблонами для программной генерации артефактов. Шаблон задает скелет артефакта, и программа заполняет пробелы. Это может быть использовано для генерации практически чего угодно, будь то HTML, какой-то скрипт (например, файл SPEC RPM), код Python, который может быть выполнен позже и т. Д.

0 голосов
/ 23 июня 2009

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

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

...