Django模板允许在for循环中使用range()吗?

niwlg2el  于 2023-03-20  发布在  Go
关注(0)|答案(3)|浏览(345)

我尝试在模板中使用for循环,但出现错误。
下面是忍者:

{% for i in range(1,10) %}
        <h2>{{i}}</h2>
    {% endfor %}

下面是错误:
django.template.exceptions.TemplateSyntaxError:无法解析其余部分:“(1,10)”来自“范围(1,10)”
我有点困惑,这表明range有问题,甚至它不存在,但我在其他Stack Overflow帖子中看到它作为解决方案的建议,比如这篇:How to simulate while loop in Jinja2
在Jinja/Django中是否存在射程?如果是,为什么不起作用,如果不起作用,最好的选择是什么?

v09wglhw

v09wglhw1#

我不认为有一个官方的解决方案,但有一些变通办法。
类似这样的东西可以在模板中工作,“a”是你想要循环的数字。

{% for x in "aa" %}
   ...
{% endfor %}

另一个解决方案是创建一个自定义模板过滤器,您可以给予它一个数字,它将返回:

range(x)

我能想到的最后一个选择是:

render_response('template.html', {'range': range(10))

然后执行以下操作:

{% for x in range %}
   ...
 {% endfor %}
qvk1mo1f

qvk1mo1f2#

首先,django模板中没有range标签或函数。
答案-将列表传递给呈现函数。
这就是你的问题

{% for i in range(1,10) %}
    <h2>{{i}}</h2>
{% endfor %}

在www.example.com中将range函数作为生成器传递,以替换它views.py

context={
'iterator':range(1,10)
}
return render(req,'anyname.html',context)

然后,在模板中,您可以按以下方式使用:

{% for i in iterator %}
   <div> {{i}} </div>
{% endfor %}
p3rjfoxz

p3rjfoxz3#

在Python中,字符串可以使用for循环进行迭代。
例如:

for ch in '0123456789':
    print(ch)

或者,在Django中:

{% for ch in '0123456789' %}
    <h2>{{ch}}</h2>
{% endfor %}

相关问题