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

cbu*_*800 4 html django django-templates jinja2

我试图在我的模板中使用 for 循环,但出现错误。

这是金贾:

    {% for i in range(1,10) %}
        <h2>{{i}}</h2>
    {% endfor %}
Run Code Online (Sandbox Code Playgroud)

这是错误:

django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '(1,10)' from 'range(1,10)'
Run Code Online (Sandbox Code Playgroud)

我有点困惑。这表明它有问题,range甚至它不存在,但我在其他 Stack Overflow 帖子中看到它被建议作为解决方案,例如这个: 如何在 Jinja2 中模拟 while 循环

jinja/django 中是否存在范围?如果是,为什么这不起作用,如果不是,最好的选择是什么?

小智 5

我不认为有一个官方的解决方案。但是,有一些解决方法。

这样的东西可以在模板中工作,“a”将是您想要循环的数字。

{% for x in "aa" %}
   ...
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是创建一个自定义模板过滤器,您可以为其提供一个数字,它会返回:

range(x)
Run Code Online (Sandbox Code Playgroud)

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

render_response('template.html', {'range': range(10))
Run Code Online (Sandbox Code Playgroud)

然后做:

{% for x in range %}
   ...
 {% endfor %}
Run Code Online (Sandbox Code Playgroud)