如何在Django模板中循环遍历context值渲染键值对列表
Django模板遍历渲染上下文键值对列表方法
你当前的视图代码直接将my_context字典作为上下文参数传入render,Django会把字典内的每个键拆分为独立模板变量(name/fly/run均为单独变量),这种模式下无法动态遍历所有自定义键值对,按以下步骤实现需求即可:
1. 调整视图传参
不要直接解包传入自定义字典,将整个字典作为上下文的一个字段传入,修改后视图代码:
def random_view(request): my_context = { "name": "turkey", "fly": "no", "run": 20 } # 将自定义字典作为整体传入上下文 return render(request, 'test/test.html', {"animal_info": my_context})
2. 模板循环渲染
在test.html中使用Django模板的for标签,调用字典的.items方法遍历键值对即可。注意Django模板中调用字典内置方法不需要加括号:
<ul> {% for key, value in animal_info.items %} <li> <strong>{{ key }}:</strong> {{ value }} </li> {% endfor %} </ul>
最终渲染出的列表效果:
- name: turkey
- fly: no
- run: 20
注意:不推荐不修改视图直接遍历全量上下文的写法。Django默认会向模板注入
request、user、csrf_token等内置变量,直接遍历全量上下文会把这些无关变量一并渲染,无法精准匹配你传入的三个自定义字段。
内容的提问来源于stack exchange,提问作者rens
相关产品推荐
相关产品推荐

