比方說,我有兩個變量傳遞給模板:var_a
和var_b
。有沒有辦法來動態地解決它們,換句話說,從字符串構造變量名?像PHP的$$var_name
。從字符串構造變量名稱
舉例來說,如果我有一個letter
變量與保存價值a
或b
,我想通過寫類似的東西來渲染var_a
:
{{"var_"|some_sort_of_concat:letter}}
,並得到var_a
值或var_b
取決於letter
的值。這樣的事情可能嗎?
比方說,我有兩個變量傳遞給模板:var_a
和var_b
。有沒有辦法來動態地解決它們,換句話說,從字符串構造變量名?像PHP的$$var_name
。從字符串構造變量名稱
舉例來說,如果我有一個letter
變量與保存價值a
或b
,我想通過寫類似的東西來渲染var_a
:
{{"var_"|some_sort_of_concat:letter}}
,並得到var_a
值或var_b
取決於letter
的值。這樣的事情可能嗎?
我的意見是,如果您基於已知的事情做決定,那麼計算應該在您呈現模板之前發生。
您也可以使用字典即var = {「a」:「foo」,「b」:「bar」} 您不能直接在模板中索引字典,因此取決於您要實現的目標或者迭代字典或使用模板過濾器,如this question,here是票證的鏈接。
您可以創建一個字典,其變量名稱爲鍵和它們的值作爲值,然後創建一個模板過濾器以通過給定變量名稱獲取字典值。變量名,也可以從列表或其他任何所作的可變:
d = {"var_a": "a", "var_b": "b"}
發送d
的模板,創建一個模板過濾器「get_dictionary_value
」:
def get_dictionary_value(d, key):
try:
if (key in d):
return d[key]
except:
pass
return ""
然後在模板:
{{ d|get_dictionary_value:"var_a" }}
或者:
{% for key in l %}
{{ d|get_dictionary_value:key }}
{% endfor %}
順便說一句,d [關鍵]的值也可以是一本字典,你可以再次申請該過濾器(並再次...):
{{ d|get_dictionary_value:key1|get_dictionary_value:key2 }}
您連答案一無所知說Django – MeLight 2014-10-08 10:42:24
投票重新開放。這不是一個可以用templatefilter btw來完成的事情,但你可以使用templatetag來完成。 – Wolph 2014-10-08 10:53:22
這裏有一個類似的問題:http://stackoverflow.com/questions/17148544/django-template-dynamic-variable-name – Wolph 2014-10-08 10:54:27