Jinja / Django的循环范围不起作用

时间:2018-11-06 21:28:01

标签: django-templates jinja2

我正在构建一个django模板来根据从视图传递的参数复制图像;然后,模板在for循环中使用Jinja2复制图像。

但是,我只能通过传递我在视图中创建的列表来使其工作。如果我尝试使用Jinja范围,则会收到错误消息(“无法解析其余部分:...”)。

阅读this link,我发誓我使用的语法正确。

模板

{% for i in range(variable) %}
    <img src=...>
{% endfor %}

我检查了要传入的变量;它是int类型。哎呀,我什至试图摆脱变量(用于测试)并尝试使用硬编码数字:

{% for i in range(5) %}
    <img src=...>
{% endfor %}

我收到以下错误:

  

无法解析其余部分:“(5)”中的“(5)”

如果我将参数字典中的一个列表传递给模板(并使用该列表代替range语句),它将起作用;图像重复了很多次。

我缺少什么? Jinja(for looprange)上的文档以及上一个链接都告诉我这应该适用于range和变量。 / p>

1 个答案:

答案 0 :(得分:1)

Soooo ....基于Franndy的评论,Django不会自动支持此评论,然后按照他们的link(导致this link),我找到了如何编写自己的过滤器。 / p>

views.py 内部:

from django.template.defaulttags import register

@register.filter
def get_range(value):
    return range(value)

然后,在模板内:

{% for i in variable|get_range %}
    <img src=...>
{% endfor %}