Django模板是否允许for循环中的range()?

时间:2018-02-06 07:00:25

标签: html django django-templates jinja2

我正在尝试在模板中使用for循环但是我收到错误。

这是jinja:

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

这是错误:

django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '(1,10)' from 'range(1,10)'

我有点困惑。这表明range存在问题,甚至不存在,但我已经看到它建议作为其他Stack Overflow帖子的解决方案,例如: How to simulate while loop in Jinja2

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

2 个答案:

答案 0 :(得分:1)

我认为没有正式的解决方案。但是有一些解决方法。

这样的东西可以在模板中使用,“a”就是你要循环的数字。

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

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

range(x)

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

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

然后执行:

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

答案 1 :(得分:0)

在 Python 中,可以使用 for 循环迭代字符串。

例如:

for ch in '0123456789':
    print(ch)

或者,在 Django 中:

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