在模板标签中设置全局模板变量

1 投票
1 回答
809 浏览
提问于 2025-04-16 14:32

我知道有一些上下文处理器可以做到这一点,但我想在模板标签中设置全局模板变量。到目前为止,我尝试了这个:

class SetNode(template.Node):
    def __init__(self, key, nodelist):
        self.key = key
        self.nodelist = nodelist

    def render(self, context):
        value = self.nodelist.render(context)
        for d in context.dicts:
            d[self.key] = value
        return ''

也就是说,遍历所有上下文并设置变量,但这并没有成功。有人能解释一下怎么做吗?比如,base.html:

{{ my_var }} {# I want to set this variable in child template #}

{% block content %}
{% endblock %}

child.html:

{% extends 'base.html' %}
{% block content %}
    {% set my_var %}Hello{% endset %}
{% endblock %}

这到底有没有可能呢?

1 个回答

0

这里有一个经典的好东西:{% expr %} 标签。这个代码的意思很简单,自己看就明白。

需要注意的是,使用这个标签可能会把你的一些业务逻辑放到模板里,但有时候这样做也是可以的。

撰写回答