0
我知道有上下文處理器可以做到這一點,但我想在模板標籤中設置全局模板變量。到目前爲止,我試過這個:在模板標籤中設置全局模板變量
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 ''
I.e.迭代所有上下文並設置變量,但它不起作用。任何人都可以解釋如何做到這一點?例如,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 %}
是否有可能呢?
我沒有試過它,但因爲我看到變量將只在它內部可用。但我想爲所有父塊設置變量(上下文)。 – 2011-03-28 08:00:07
@Vladimir Mihailenco:然後查看代碼並對其進行更改,以便它沿着上下文堆棧前進,並將值保存在那裏。但是,我會警告你,通過這樣做,你可能會設置自己(或者跟隨你的人)進行真正的惡意調試會話,因爲你試圖弄清楚這個模板發生了什麼事情變量的值。 – 2011-03-28 13:31:49
我的代碼已經做到了(「走得更遠,上下文堆棧並保存值」),但它不起作用。據我瞭解,當我的標籤被調用時,Django已經呈現父級/超級模板。我想念什麼? – 2011-03-28 16:23:01