【问题标题】:Django: edit template inside another templateDjango:在另一个模板中编辑模板
【发布时间】:2013-06-13 23:16:23
【问题描述】:

我正在使用 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

【问题讨论】:

  • 您可以将其存储为数据库字段,并启用 tinymce。这样,您的客户就可以对其进行编辑
  • 为什么不直接利用 Django-CMS?
  • @Brandon,谢谢,我可能会在下一个项目中尝试一下。但是这个客户需要深度定制的管理员我怀疑任何 CMS 都适合这个工作
  • @karthikr,谢谢,但我已经这样做了。我的问题是如何使用上下文呈现存储在 db(字符串)中的模板。 Basti 在下面给出了正确答案。
  • Django-CMS 非常强大。我强烈推荐它。

标签: django


【解决方案1】:

如果您希望您的用户能够编辑模板,那么您应该将模板存储在数据库中。有一些包可以为你做这件事,但你自己做很容易

# 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'}))

【讨论】:

  • 正是我所要求的。虽然我一个小时前自己就知道了:)
猜你喜欢
  • 2011-10-12
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 2011-05-28
相关资源
最近更新 更多