views.py:
def main(request):
users = PUser.objects.filter(ostan=os, shahr=sh, content_id=content)
return render(request, 'main.html', {'users': users})
在main.html文件中:
<a href="#">{{ users.0.website }}</a>
.
.
.
<a href="#">{{ users.1.website }}</a>
.
.
.
<a href="#">{{ users.2.website }}</a>
.
.
.
<a href="#">{{ users.3.website }}</a>
现在我想把它通过一个for循环。所以我添加了这一行:
numbers = [1, 2, 3, 4]
到views.py,并编辑了这样的main.html:
{% for each in numbers %}
<a href="#">{{ users.0.website }}</a>
{% enfor %}
但我不知道如何编辑{{ users.0.website }}
部分!
我试过{{ users.each.website }}
但它没有打印任何内容。我该怎么改变它?
答案 0 :(得分:1)
{{ users.each.website }}
所做的是搜索名为"each"
的变量中存储的string
中dict
类型的密钥users
。因此,它不是名为each
的变量中的值,该变量用于查找名为dict
的{{1}}中的值,但原始值users
。< / p>
不幸的是,Django的模板语言中没有内置的过滤器可以做你想要的,但你可以自己实现一个模板过滤器。查看this question的答案。
除此之外:您是否记得在模板中提供变量"each"
?
numbers
...因为否则循环根本不会被执行,因为模板内的def main(request):
// ...
return render(request, 'main.html', {'users': users, 'numbers': numbers})
是numbers
。对于您的特殊用例,您可能只需迭代集合本身:
None
要仅显示有限数量的条目,您可以使用forloop.counter
而不是引入单独的数字列表:
{% for user in users %}
<a href="#">{{ user.website }}</a>
{% enfor %}