Django渲染模板变量

时间:2016-02-11 13:27:06

标签: django templates rendering

我有一个名为“GOALS”的字段,它被渲染为模板变量并存储在django模型中。该字段通过管理界面输入并包含原始html,因此在django模板中有

<html>
...
<P>{{ GOALS|safe }}</P}
...
</html>

现在我想在使用我自己的模板标记放入上下文之前渲染它。这将允许工作人员输入将查询数据库的标签,而不是硬代码变量,例如由slug等识别的项目的标题。

我想让他们输入模板标签,例如

GOALS = "... {{ "slug"|gettitle }} ..."

在使用

进入上下文之前渲染GOALS
from django.template import Template, Context
html2render = "{% load episode_tags %}" + GOALS
miniTemplate = Template(html2render)
context = Context({})
GOALS = miniTemplate.render(context)

但加载我的模板标签不能以这种方式使用Template,而且这与TemplateSyntaxError崩溃了。所以我想我可以使用ElementTree和XML,但在我继续这样做之前(这有点单调乏味)我想问更广泛的社区是否有更好的方法来做到这一点。

1 个答案:

答案 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("&quot;", '"')
        try:
            miniTemplate = Template(html2render)
            context = Context({})
            GOALS = miniTemplate.render(context)
        except TemplateSyntaxError:
            pass
相关问题