2014-03-29 46 views
0

在模板中,我有一個字符串變量(list_name),表示名稱我不知道的(動態)列表的名稱。使用字符串變量引用jinja2中的列表

例如,在常規的Python我會使用:

list_name = "my_list" 
my_list = ["a","b"] 

for x in vars()[list_name]: 
    print x 

在神社,我想這樣做:

​​

,但我不能; vars(list_name)不起作用。

+0

爲什麼不只是:'{%for x in my_list%}'或什麼 – sshashank124

+0

@ sshashank12 4感謝您的建議。顯然是一些嘗試。我真的需要使用'list_name',my_list是動態的,對我來說是未知的......可以是我所知道的my_other_list或listzilla。 – briceburg

+0

我不認爲你可以像這樣訪問模板內部的變量。難道你不能將這個邏輯移出模板,並將合適的列表值賦給python應用中的一個公共變量,然後在模板中使用它? – vivekagr

回答

0

我認爲你在Python代碼和模板中都過分依賴全局變量。

首先,我覺得你的Python代碼應該是這樣的:

vars_ = {} 
list_name = 'my_list' 
vars_['my_list'] = ['a', 'b'] 

for x in vars_[list_name]: 
    print x 

等價,模板應該是這樣的:

{% for x in vars_.get(list_name) %} 
    ... 
{% endfor %} 

你會使用渲染這個模板映射

{'vars_': vars_, 'list_name': list_name}