从数据库加载 django 模板

Posted

技术标签:

【中文标题】从数据库加载 django 模板【英文标题】:Load django template from the database 【发布时间】:2011-01-28 14:24:07 【问题描述】:

我试图从 djangos 正常请求-响应结构之外的数据库中呈现 django 模板。但由于 django 模板的编译方式,这似乎并不简单。我想做这样的事情:

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

你是怎么做到的?

【问题讨论】:

我只是想知道您将如何更新您的模板?你将打破 MVC/T django 模型框架 【参考方案1】:

这没有什么复杂的,它与请求/响应结构没有任何关系。您需要做的就是将模板字符串传递给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)))

【讨论】:

AFAICT 您需要将参数 dict 包装在对 Context() 的调用中以使其工作,即:from django.template import Context; tpl.render(Context('a' : 123, 'b' : 456))【参考方案2】:

有一个可重用的应用程序可以从数据库中加载模板:

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

【讨论】:

遗憾的是,它似乎被遗弃了。PyPI 的最后一个版本是 2012 年的。 @user1496984 - 但GitHub 已于 6 个月前更新。

以上是关于从数据库加载 django 模板的主要内容,如果未能解决你的问题,请参考以下文章

从字符串而不是从文件加载模板

Django:无法从 DigitalOcean Droplet 上的模板加载静态文件

Django从模板加载css

Django从模板加载静态url和路径

Django - 如何将 javascript 变量从另一个文件加载到模板

外键 id 无法加载到 Django 模板的下拉列表中