如何在 django 中编译保存在数据库中的模板

Posted

技术标签:

【中文标题】如何在 django 中编译保存在数据库中的模板【英文标题】:How to compile a template saved in database in django 【发布时间】:2019-01-25 22:53:46 【问题描述】:

我正在构建一个电子邮件发送应用程序,我在数据库中存储了许多 html 模板,因此对于每个收件人,我需要通过合并 HTML 中的标签/占位符来自定义此模板,

电子邮件模板示例

<html>
 ....
     Hello  Name ,
 ....
</html>

所以我需要根据我拥有的上下文变量来编译它。就像我们编译 Django 模板一样,在当前的场景下我该怎么做呢,

尝试了render_to_string()get_template() 函数,但它们会查找存储在templates/ 文件夹中的实际模板文件。

【问题讨论】:

您不能将电子邮件模板文件存储在其中一个文件夹中吗? 这是一个电子邮件营销应用程序,用户可以在其中创建多个电子邮件模板。这就是我将它存储在数据库中的原因。 仍然这不能回答问题;) 你能提到django版本吗? 只有 Django 2 【参考方案1】:

有两种方法:

    使用from_string():https://docs.djangoproject.com/en/2.1/ref/templates/api/#django.template.Engine.from_string

    直接使用模板对象。

示例。

    from django.template import Template

    template = Template("My name is  my_name .")

【讨论】:

您可以稍微编辑一下答案并格式化代码吗?我可以接受这个【参考方案2】:

可以使用django的template.Template类

from django import template

html_template_str = "<html> Hello  Name  </html>"

t = template.Template(html_template_str)
c = template.Context('Name':"Name")
html = t.render(c)

html 将包含渲染的模板 html

【讨论】:

以上是关于如何在 django 中编译保存在数据库中的模板的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 模板中显示保存的、动态创建的图像?

我如何在 django 的同一视图功能中将最近保存的数据发送到模板中

如何运行保存在模型实例中的 Django 代码?

如何正确使用 % include % 标签在 django 中呈现模板(如部分)?

如何从 django 的表单中获取数据?

django表单提交后如何用弹框提示成功?