英文:
Output in jinja loop two parameters
问题
我正在使用Django进行开发。输出数据通过以下方式传递给HTML页面:
def page(request):
data = { 'name': [
'nameOne',
'nameTwo',
'nameThree'
],
'id': [
'1',
'2',
'3'
]
}
return render(request, "mainpageapp/page.html", data)
我想要在链接中显示文本名称和值ID:
<a href="/{{id}}">{{name}}</a>
目前,我只能在for循环中输出一个元素:
{% for el in name %}
<a href="/{{el}}">{{el}}</a><br>
{% endfor %}
是否可以在一个for循环中显示两个字典元素?或者有其他实现方式吗?
英文:
I'm developing with Django. The output data is passed to the html page as follows:
def page(request):
data = { 'name':[
'nameOne',
'nameTwo',
'nameThree'
],
'id':[
'1',
'2',
'3'
]
}
return render( request, "mainpageapp/page.html", data)
I would like to see a link with text name and value id
<a href="/{{id}}">{{name}}</a>
At the moment I can only output one element in the for loop
{% for el in name %}
<a href="/{{el}}">{{el}}</a><br>
{% endfor %}
Is it possible to display two dictionary elements in one forloop? Or some other way to implement this?
答案1
得分: 2
将两个对象压缩成一个可迭代对象:
def page(request):
name = ['nameOne', 'nameTwo', 'nameThree']
ids = ['1', '2', '3']
data = zip(ids, name)
context = {'data': data}
return render(request, 'mainpageapp/page.html', context)
在模板中,我们可以使用以下方式进行枚举:
{% for pk, name in data %}
<a href="/{{ pk }}">{{ name }}</a><br>
{% endfor %}
注意:请不要将变量命名为id
,这会覆盖对内置函数id
的引用。可以使用ids
等其他名称。
英文:
Zip the two into a single iterable:
<pre><code>def page(request):
name = ['nameOne', 'nameTwo', 'nameThree']
ids = ['1', '2', '3']
data = <b>zip(ids, name)</b>
context = {'data': data}
return render(request, 'mainpageapp/page.html', context)</code></pre>
in the template, we then enumerate with:
<pre><code>{% for <b>pk, name in data</b> %}
<a href="/{{ pk }}">{{ name }}</a><br>
{% endfor %}</code></pre>
> Note: Please do not name a variable id
, it overrides the reference to the id
builtin function <sup>[Python-doc]</sup>. Use for example ids
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论