Django模板中如何在单个for循环内同时遍历两个字典元素?
解决Django模板中关联两个列表生成链接的问题
方法一:后端打包数据(推荐)
直接在视图函数里把name和id两个列表打包成元组列表,让模板循环一次就能拿到对应的数据:
修改后端代码:
def page(request): names = ['nameOne', 'nameTwo', 'nameThree'] ids = ['1', '2', '3'] # 打包成(名称, ID)的元组列表 data = {'items': zip(names, ids)} return render(request, "mainpageapp/page.html", data)
模板中循环使用:
{% for name, item_id in items %} <a href="/{{ item_id }}">{{ name }}</a><br> {% endfor %}
注:这里用
item_id作为变量名,是为了避免和Django模板内置的id变量冲突,更安全。
方法二:模板中用索引关联
如果不想修改后端代码,可以利用Django模板循环自带的forloop.counter0变量(从0开始的索引),匹配两个列表的对应元素:
模板代码:
{% for name in name %} {% with index=forloop.counter0 %} <a href="/{{ id.index }}">{{ name }}</a><br> {% endwith %} {% endfor %}
这种方法要求两个列表长度严格一致,否则会出现索引越界或数据不匹配的问题,因此优先推荐第一种后端打包的方式。
内容的提问来源于stack exchange,提问作者SummerThunder
相关产品推荐
相关产品推荐

