Вопрос

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

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

Я видел много упоминаний о шаблонизаторах, в том числе zedshaw рассказывал об использовании Jinja2 в Лэмсон

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top