我有一个名为“GOALS”的字段,它被渲染为模板变量并存储在django模型中。该字段通过管理界面输入并包含原始html,因此在django模板中有
<html>
...
<P>{{ GOALS|safe }}</P}
...
</html>
现在我想在使用我自己的模板标记放入上下文之前渲染它。这将允许工作人员输入将查询数据库的标签,而不是硬代码变量,例如由slug等识别的项目的标题。
我想让他们输入模板标签,例如
GOALS = "... {{ "slug"|gettitle }} ..."
在使用
进入上下文之前渲染GOALSfrom django.template import Template, Context
html2render = "{% load episode_tags %}" + GOALS
miniTemplate = Template(html2render)
context = Context({})
GOALS = miniTemplate.render(context)
但加载我的模板标签不能以这种方式使用Template,而且这与TemplateSyntaxError崩溃了。所以我想我可以使用ElementTree和XML,但在我继续这样做之前(这有点单调乏味)我想问更广泛的社区是否有更好的方法来做到这一点。
答案 0 :(得分:0)
事实证明,我提出的解决方案是正确的(感谢@GwynBleidD)。 django admin中的编辑器允许输入字段,使用小部件CKEditorWidget自动呈现html。它正在改变引号&#39;&#39;&#39;进入&#39;&#39;&#39;。我开始将小部件子类化以替换html安全引号,但我没有时间。我告诉用户希望在源代码中看到&amp; quot并使用以下内容。
# The GOALS field is rendered by the CKEditorWidget before it is stored.
html2render = "{% load episode_tags %}" + GOALS.replace(""", '"')
try:
miniTemplate = Template(html2render)
context = Context({})
GOALS = miniTemplate.render(context)
except TemplateSyntaxError:
pass