我有4个长度相同的列表,并希望将它们全部传递到html页面。
views.py
return render(request, 'result.html', {'listA':listA, 'listB':listB, 'listC':listC, 'listD':listD})
这是我尝试使用Flask时的代码。
app.py
return render_template('result.html', listA = listA, listB = listB, listC = listC, listD = listD)
以下是模板文件中的代码;使用Flask,它打印出来没有任何问题,但它似乎不适用于Django。 我该如何修复我的代码?
result.html
{% for i in listA %}
<tr>
<th> {{ listA[loop.index] }} </th>
<td> {{ listB[loop.index] }} </td>
<td> {{ listC[loop.index] }} </td>
<td> {{ listD[loop.index] }} </td>
</tr>
{% endfor %}
答案 0 :(得分:0)
您应该使用自定义templatetag来实现查找,因为django不会为您提供一个。
然后使用django模板引擎for loop获取forloop.counter0
首先在app文件夹中创建templatetags
__init__.py
目录。假设您的应用程序被称为polls
文件夹结构将如下所示:
polls/
__init__.py
models.py
templatetags/
__init__.py
lookup.py
views.py
写入查找代码后进入lookup.py
:
from django import template
register = template.Library()
@register.filter
def lookup(d, key):
return d[key]
并在模板文件中使用它:
{% load lookup %}
...
{% for i in listA %}
<tr>
<th> {{ listA|lookup:forloop.counter0 }} </th>
<td> {{ listB|lookup:forloop.counter0 }}</td>
<td> {{ listC|lookup:forloop.counter0 }}</td>
<td> {{ listD|lookup:forloop.counter0 }}</td>
</tr>
{% endfor %}
...