在Django模板中通过dict1的键获取dict2对应值的实现问题
在Django模板中通过dict1的键获取dict2对应值的实现问题
嘿,我来帮你搞定这个问题!你遇到的其实是Django模板语法的一个小坑——你写的{{ dict2.key }}是在访问dict2里字面量为"key"的键,而不是循环中那个名为key的变量,所以自然拿不到对应的值啦。
下面给你两种靠谱的解决方法:
方法一:使用字典的get()方法(推荐)
这个方法最安全,就算某个key在dict2里不存在,也不会报错,还能设置默认值兜底:
{% for key, value in dict1.items %} {{ dict2.get(key) }} <!-- 如果想给不存在的key加默认值,可以写成这样 --> <!-- {{ dict2.get(key, '暂无数据') }} --> {% endfor %}
方法二:使用索引语法
如果能百分百保证dict1的所有key都存在于dict2中,也可以直接用索引访问:
{% for key, value in dict1.items %} {{ dict2[key] }} {% endfor %}
不过要注意,如果某个key在dict2里找不到,这种方式会直接抛出KeyError导致模板渲染失败,所以不如get方法稳妥。
至于你问的“两个字典是不是总是同长度”——如果这两个字典是你自己生成、能严格保证对应关系的,那长度会一致;但如果是从数据库、第三方接口这类外部来源获取的,最好在视图层先做个长度校验(比如len(dict1) == len(dict2)),或者在模板里用get方法兜底,避免出现异常。
备注:内容来源于stack exchange,提问作者Abhi
相关产品推荐
相关产品推荐

