該問(wèn)題在正常python中并不存在,但是在django模板語(yǔ)法中字典中的鍵名是無(wú)法用變量來(lái)調(diào)取的,所以只能用自定義tag和自定義變量來(lái)解決該問(wèn)題。
比如有兩個(gè)變量a=["26", "27"],b={"26": ["/static/upload/20200717/1594954536.jpg", "/static/upload/20200717/1594954540.png"],"27":["/static/upload/20200717/1594954545.jpg"]},這時(shí)想要根據(jù)循環(huán)a的值來(lái)當(dāng)做b的索引然后在循環(huán)出內(nèi)部的數(shù)據(jù)。
Python中正常寫(xiě)法:
for I in a:
for x in b[i]:
print(x)
這樣便能夠輸出b中每一條記錄,但是django中模板中不支持任何寫(xiě)法的b[i]
解決方法為:
{% for i in a%}
{% with photo=b|get_obj:i %}#定義一個(gè)變量phtot 自定義標(biāo)簽get_boj 獲取b對(duì)象中的i
{% for x in photo %}
{{x}}
{% endfor %}
{% endwith %}
{% endfor %}
Templatetags中的自定義變量
@register.filter
def get_obj(list,key):
# return len(list)
return list.get(key)
這樣便可以解決剛才輸出的問(wèn)題,具體django模板語(yǔ)法請(qǐng)參考文章:django使用中遇到的小問(wèn)題以及解決方案