Ответ 1
Создайте django.template.Template()
, передав строку для использования в качестве шаблона.
Я решил сохранить шаблоны всех системных писем в БД. Тело этих писем - обычные шаблоны django (с тегами).
Это означает, что мне нужен механизм шаблонов для загрузки шаблона из строки, а не из файла. Есть ли способ сделать это?
Создайте django.template.Template()
, передав строку для использования в качестве шаблона.
Чтобы дополнить ответ Ignacio Vazquez-Abrams, вот фрагмент кода, который я использую для получения объекта шаблона из строки:
from django.template import engines, TemplateSyntaxError
def template_from_string(template_string, using=None):
"""
Convert a string into a template object,
using a given template engine or using the default backends
from settings.TEMPLATES if no engine was specified.
"""
# This function is based on django.template.loader.get_template,
# but uses Engine.from_string instead of Engine.get_template.
chain = []
engine_list = engines.all() if using is None else [engines[using]]
for engine in engine_list:
try:
return engine.from_string(template_string)
except TemplateSyntaxError as e:
chain.append(e)
raise TemplateSyntaxError(template_string, chain=chain)
Метод engine.from_string
будет создавать объект django.template.Template
с template_string
в качестве первого аргумента, используя первый бэкэнд из settings.TEMPLATES
, который не приведет к ошибке.