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

Загрузите шаблон из строки, а не из файла

Я решил сохранить шаблоны всех системных писем в БД. Тело этих писем - обычные шаблоны django (с тегами).

Это означает, что мне нужен механизм шаблонов для загрузки шаблона из строки, а не из файла. Есть ли способ сделать это?

4b9b3361

Ответ 1

Создайте django.template.Template(), передав строку для использования в качестве шаблона.

Ответ 2

Чтобы дополнить ответ 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, который не приведет к ошибке.