簡體   English   中英

Django-使用模板中的變量調用列表或字典項

[英]Django - Calling list or dict item using a variable in template

我正在嘗試使用該模板中的沒有結果的變量來調用模板中的字典或列表對象。

我要嘗試的與此通用python代碼相同:

keylist=[
        'firstkey',
        'secondkey',
        'thirdkey',
        ]
exampledict={'firstkey':'firstval',
             'secondkey':'secondval',
             'thirdkey':'thirdval',
             }

for key in keylist:
    print(exampledict[key])

#Produces:
    #firstval
    #secondval
    #thirdval

Django模板中的工作原理有些不同。 我有一個定義為key ='firstkey'的變量傳遞給模板。 如果我想調用相同的詞典:

{{ exampledict.firstkey }} #Produces: firstval
{{ exampledict.key }} #Produces: None

Django循環模板也具有一個產生的變量forloop.counter0,它從firstloop中的0增加到最后一個循環中的n-1,這不能調用列表對象。 我有一個清單:

tabletitles=['first table', 'second table', 'third table']

我想循環調用和創建表,將各個表的表標題放在上面,如下所示:

{% for table in tables %}
<h3> first table </h3>
<table>
...
</table>
{% endfor %}

在這種情況下,我想做的是

{% for table in tables %}
<h3> {{ tabletitles.forloop.counter0 }} </h3>
<table>
...
</table>
{% endfor %}

這也不起作用,因為我不能使用單獨的變量來為模板中的字典或列表調用對象。 有沒有一種方法可以使它正常工作,或者有更好的方法可以一起完成這些工作?

Django模板語言不允許您訪問字典鍵和帶有變量的列表。 您可以編寫一個模板標簽來執行此操作(例如,請參見此問題 ),但是在您的情況下,有一個更簡單的選擇。

在您看來,將表格和標題壓縮在一起

tables_and_titles = zip(tables, tabletiles)

然后在模板中將它們一起循環。

{% for table, title in tables_and_titles %}
    {{ title }}
    <table>
    {{ table }}
    </table>
{% endfor %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM