该问题在正常python中并不存在,但是在django模板语法中字典中的键名是无法用变量来调取的,所以只能用自定义tag和自定义变量来解决该问题。
比如有两个变量a=["26", "27"],b={"26": ["/static/upload/20200717/1594954536.jpg", "/static/upload/20200717/1594954540.png"],"27":["/static/upload/20200717/1594954545.jpg"]},这时想要根据循环a的值来当做b的索引然后在循环出内部的数据。
Python中正常写法:
for I in a:
for x in b[i]:
print(x)
这样便能够输出b中每一条记录,但是django中模板中不支持任何写法的b[i]
解决方法为:
{% for i in a%}
{% with photo=b|get_obj:i %}#定义一个变量phtot 自定义标签get_boj 获取b对象中的i
{% for x in photo %}
{{x}}
{% endfor %}
{% endwith %}
{% endfor %}
Templatetags中的自定义变量
@register.filter
def get_obj(list,key):
# return len(list)
return list.get(key)
这样便可以解决刚才输出的问题,具体django模板语法请参考文章:django使用中遇到的小问题以及解决方案