您能想出一种在模板渲染期间将文本字段评估为模板的简单方法吗?
我知道如何在 View 中执行此操作,但我正在寻找模板 Filter 或 Tag ?
就像是:{{ object.textfield|evaluate}}
或者{% evaluate object.textfield %}
使用 object.textfield 包含以下内容:a text with a {% TemplateTag %}.
其中TemplateTag
将被评估,感谢 evaluate
筛选。
最佳答案
这是解决我的问题的第一个标签实现:
from django import template
register = template.Library()
@register.tag(name="evaluate")
def do_evaluate(parser, token):
"""
tag usage {% evaluate object.textfield %}
"""
try:
tag_name, variable = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents.split()[0]
return EvaluateNode(variable)
class EvaluateNode(template.Node):
def __init__(self, variable):
self.variable = template.Variable(variable)
def render(self, context):
try:
content = self.variable.resolve(context)
t = template.Template(content)
return t.render(context)
except template.VariableDoesNotExist, template.TemplateSyntaxError:
return 'Error rendering', self.variable
关于django - 在 Django 中,是否有一种简单的方法可以在模板中将文本字段呈现为模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1278042/