问题描述
我需要在 model.TextField
值中自定义模板标签.来自对象文本字段的值类似于 "lorem ipsum dolor {% mytag %}"
但mytag"不会呈现为模板标签.它在库中注册为标签并加载到页面上,我有 {{ object.textfield|safe }}
过滤器.有可能吗?
I need custom template tag inside model.TextField
value. Value from the object text field have something like "lorem ipsum dolor {% mytag %}"
but "mytag" is not rendered as template tag. It is registered in the library as tag and loaded on the page and I have {{ object.textfield|safe }}
filter. Is it possible at all?
推荐答案
由于 Django 的模板引擎可以轻松地在代码中的任何位置使用,因此您应该能够执行以下操作:
As Django's template engine can easily be used anywhere in your code you should be able to do something like this:
from django.template import Context, Template
rendered = Template("{% load your_tag_library %}",
object.textfield).render(Context())
不是从文件渲染模板,而是从如下字符串渲染模板:
Rather than rendering the template from a file it renders it from a string like:
"{% load your_tag_library %}lorem ipsum dolor {% mytag %}"
例如,代码可以在您的视图中使用或作为模型上的方法使用.请注意,Context
为空,您不妨将带有模板变量的 dict 传递给它.
The code can for instance be used in your view or as a method on your model. Note that the Context
is empty, you might as well pass a dict with template variables to it.
此外,要直接在模板中处理它,您可以编写一个自定义模板标签,它执行类似的操作,基本上是一个解析模板标签字符串的模板标签.
Furthermore, to handle it directly in the template you could write a custom templatetag which does something similiar, basically a templatetag that parses strings for templatetags.
这篇关于对象 TextField 内的模板标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!