Django模板语言遍历字典报错ValueError,如何正确解包?
解决Django模板遍历字典键值对的错误
你遇到的问题核心在于:在Django模板中直接遍历字典时,默认只会遍历它的键,而不是键值对。所以当你尝试用{% for l, x in poll.votes %}解包成两个变量时,每次循环只能拿到单个键值(比如'a1'),自然会触发解包数量不匹配的错误。
正确的做法是使用字典的items方法来获取键值对集合,在Django模板里调用方法不需要加括号,修改后的代码如下:
{% for l, x in poll.votes.items %} <p>{{ l }} {{ x }}</p> {% endfor %}
至于你提到的iteritems,它是Python 2中的写法,在Python 3里已经被移除了。Django模板会自动适配当前Python版本,使用items就是官方推荐的正确方式,能稳定获取可迭代的键值对。
另外你看到的错误提示说"got 3",可能是实际运行时你的poll.votes字典包含了3个键?不过不管键的数量多少,只要用items方法就能正确遍历每个键值对啦。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

