如何在 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 的同一视图功能中将最近保存的数据发送到模板中