Я хочу использовать механизм шаблонов Django в своем (Python) коде, но я не создаю веб-сайт на основе Django. Как мне использовать его, не имея файла settings.py (и других) и не устанавливая переменную среды DJANGO_SETTINGS_MODULE?
Если я запустил следующий код:
>>> import django.template
>>> from django.template import Template, Context
>>> t = Template('My name is {{ my_name }}.')
Я получил:
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
python
django
templates
django-templates
template-engine
Дэрил Спитцер
источник
источник
settings.configure()
.Синтаксис Jinja2 почти такой же, как у Django, с очень небольшими отличиями, и вы получаете гораздо более мощный механизм шаблонов, который также компилирует ваш шаблон в байт-код (БЫСТРО!).
Я использую его для создания шаблонов, в том числе и в самом Django, и он очень хорош. Вы также можете легко написать расширения, если какая-то функция, которую вы хотите, отсутствует.
Вот некоторая демонстрация генерации кода:
источник
По какой причине вы хотите использовать шаблоны Django? И Джиндзя, и Генши , на мой взгляд, выше.
Если вы действительно этого хотите, посмотрите документацию по Django
settings.py
. Особенно раздел «Использование настроек без настройкиDJANGO_SETTINGS_MODULE
». Используйте что-то вроде этого:источник
Я также рекомендовал бы jinja2. Есть хорошая статья о
django
vs.,jinja2
которая дает некоторую подробную информацию о том, почему вы должны предпочесть позднее.источник
{% set %}
синтаксиса и равенства шаблоновому движку Twig (PHP). Лучше всегда писать кросс-платформенный код, но разница в производительности не критична - например, python всегда будет работать медленнее, чем PHP, поэтому, если вам нужна производительность, вам лучше создать сайт с помощью PHP, Twig и Symfony2 или иначе. Печально, но правда.Согласно документации Jinja, поддержка Python 3 все еще экспериментальная . Так что, если вы используете Python 3 и производительность не является проблемой, вы можете использовать встроенный механизм шаблонов django.
В Django 1.8 появилась поддержка нескольких механизмов шаблонов, что требует изменения способа инициализации шаблонов. Вы должны явно настроить,
settings.DEBUG
что используется механизмом шаблонов по умолчанию, предоставляемым django. Вот код для использования шаблонов без использования остальной части django.источник
В дополнение к тому, что писали другие, если вы хотите использовать шаблон Django в Django> 1.7, вы должны указать свои настройки. Config (...) вызвать переменную TEMPLATES и вызвать django.setup () следующим образом:
Затем вы можете загрузить свой шаблон, как обычно, из строки:
И если вы записали переменную DIRS в .configure, с диска:
Ошибка Django: серверная часть DjangoTemplates не настроена
http://django.readthedocs.io/en/latest/releases/1.7.html#standalone-scripts
источник
Я бы тоже сказал Джиндзя . Он определенно более мощный, чем Django Templating Engine, и сам по себе .
Если бы это был внешний плагин к существующему приложению Django, вы могли бы создать собственную команду и использовать механизм шаблонов в среде своих проектов. Как это;
Но я не думаю, что стоит использовать Django Templating Engine вместо Jinja.
источник
Спасибо за помощь, ребята. Еще одно дополнение. Случай, когда вам нужно использовать настраиваемые теги шаблона.
Допустим, у вас есть этот важный тег шаблона в модуле read.py
Это файл шаблона html "temp.html":
Наконец, вот скрипт Python, который свяжет все вместе
Результат будет
источник
django.template.base.add_to_builtins("read")
поднимаетValueError
для меня.TemplateDoesNotExist
ошибку Я использую django 1.10.1Нашел это:
http://snippets.dzone.com/posts/show/3339
источник
Не надо. Вместо этого используйте StringTemplate - нет причин рассматривать какой-либо другой шаблонизатор, если вы о нем знаете.
источник
Я повторяю приведенные выше утверждения. Jinja 2 - довольно хороший набор шаблонов Django для общего использования. Я думаю, что они работают над тем, чтобы сделать шаблоны Django менее связанными с settings.py, но Jinja подойдет вам.
источник
При запуске
manage.py
оболочки:источник
Google
AppEngine
использует механизм шаблонов Django, вы видели, как они это делают? Вы могли бы просто использовать это.источник