使用 Django 1.5.5,我需要调用自定义模板标签并以某种方式将结果存储在变量中,以检查它是否包含非空的空字符串。我需要看起来像这样的东西:
{% load smart_html %}
{% render_html widget.content as widget_content %}
{% if widget_content %}
Do stuff here...
{% endif %}
这受到 {% url %} 内置模板标签的启发,允许调用它并使用以下语法将结果存储在变量中:
{% url 'named_url' as my_named_url %}
我的模板标签如下所示:
@register.simple_tag(takes_context=True)
def render_html(context, html):
"""Allows executing 'Django code' within the HTML"""
return Template(html).render(context)
我还考虑过将自定义模板标签的返回值添加到上下文中。你怎么看待这件事?这会危险吗?这看起来像:
@register.simple_tag(takes_context=True)
def render_html(context, html, var_name=None):
"""Allows executing 'Django code' within the HTML"""
html = Template(html).render(context)
if var_name:
context[var_name] = html
html = ''
return html
最佳答案
如果标签是您控制的,那么也许可以考虑使用 assignment tag 。如果该标签不是您控制的,那么您可能必须使用您自己的分配标签将其包装起来。
关于django - 如何使用 Django 模板存储 templatetag 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456597/