我正在使用Django制作CMS,其中一个理想的功能是让我的客户能够自己编辑自动发送的商业电子邮件(这些电子邮件是模板文件)。代码可以更好地解释。这是我的email_edit.html
:
{% block content %}
<form action="">
Subject: <input type="text">
Content: <textarea>{% include "email1.html" %}</textarea>
<input type="submit" value="Save">
</form>
{% endblock content %}
显然它不起作用。 email1.html
本身就是一个模板文件,因此include
标签尝试使用上下文呈现它,这不是我想要的。我想将email1.html
的内容放在textarea
中以使其可编辑。我怎么能这样做?
PS:我使用的是Jinja2
答案 0 :(得分:3)
如果您希望用户能够编辑模板,则应将模板存储在数据库中。有一些软件包可以帮到你,但你自己很容易做到
# in models.py
class EmailTemplate(models.Model):
name = models.CharField(max_length=50)
template = models.TextField()
然后,当您需要发送电子邮件时,可以这样呈现:
# in views.py
from django.template import Template, Context
#in your view
email_template = get_object_or_404(EmailTemplate, id = template_id) #You should know how to get this somewhere
template = Template(email_template.template)
email_body = template.render(Context({'my_context':'my_context'}))