Загрузить шаблон django из базы данных

Я пытаюсь отобразить шаблон django из базы данных за пределами обычной структуры запроса-ответа django. Но это кажется нетривиальным из-за того, как компилируются шаблоны django. Я хочу сделать что-то вроде этого:

>>> s = Template.objects.get(pk = 123).content
>>> some_method_to_render(s, {'a' : 123, 'b' : 456})
>>> ... the rendered output here ...

Как ты это делаешь?


person Björn Lindqvist    schedule 17.03.2010    source источник
comment
Мне просто интересно, как вы будете обновлять свои шаблоны? Вы будете нарушать структуру модели django MVC/T.   -  person gath    schedule 17.03.2010


Ответы (2)


В этом нет ничего сложного, и это не имеет ничего общего со структурой запроса/ответа. Все, что вам нужно сделать, это передать строку шаблона в конструктор django.template.Template (кстати, я изменил имя вашей модели, чтобы избежать путаницы):

from django.template import Context, Template
from myapp.models import DbTemplate

s = DbTemplate.objects.get(pk=123).content
tpl = Template(s)
tpl.render(Context(dict(a=123, b=456)))
person Daniel Roseman    schedule 17.03.2010
comment
AFAICT вам нужно обернуть аргумент dict в вызове Context(), чтобы это сработало, то есть: from django.template import Context; tpl.render(Context({'a' : 123, 'b' : 456})) - person jessykate; 14.05.2013

Существует многоразовое приложение, которое загружает шаблоны из базы данных:

http://django-dbtemplates.readthedocs.org/en/latest/

person guettli    schedule 20.06.2011
comment
К сожалению, кажется, что он заброшен. Последняя версия в PyPI от 2012 года. - person user1496984; 23.06.2016
comment
@user1496984 - Но на GitHub он был обновлен 6 месяцев назад. - person Tony; 23.03.2017