对象TextField中的模板标记

时间:2012-08-08 22:47:11

标签: django django-templates django-views

我需要model.TextField值内的自定义模板标记。对象文本字段中的值类似于"lorem ipsum dolor {% mytag %}",但“mytag”未呈现为模板标记。它在库中注册为标记并加载到页面上,我有{{ object.textfield|safe }}过滤器。它有可能吗?

1 个答案:

答案 0 :(得分:1)

由于Django的模板引擎可以轻松地在代码中的任何位置使用,因此您应该可以执行以下操作:

from django.template import Context, Template
rendered = Template("{% load your_tag_library %}",
    object.textfield).render(Context())

不是从文件中渲染模板,而是从字符串中呈现它:

"{% load your_tag_library %}lorem ipsum dolor {% mytag %}"

例如,代码可以在您的视图中使用,也可以作为模型的方法使用。请注意,Context为空,您也可以将带有模板变量的dict传递给它。

此外,要直接在模板中处理它,您可以编写一个自定义模板标签,它可以执行类似的操作,基本上是一个解析模板标签字符串的模板标签。