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

Van*_*Van 1 django-templates jinja2

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

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

阅读此链接,我发誓我使用了正确的语法。

模板

{% for i in range(variable) %}
    <img src=...>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

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

{% for i in range(5) %}
    <img src=...>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法解析余数:“range(5)”中的“(5)”

如果我将参数字典中的列表传递给模板(并使用该列表代替范围语句),它就会起作用;无论我想要多少次,图像都会重复。

我缺少什么? Jinja 上的文档(for 循环范围)和前面的链接都告诉我这应该与范围和变量一起使用。

Van*_*Van 5

Soooo....根据Franndy的评论,Django不会自动支持这一点,并按照他们的链接(导致此链接),我找到了如何编写自己的过滤器。

内部views.py

from django.template.defaulttags import register

@register.filter
def get_range(value):
    return range(value)
Run Code Online (Sandbox Code Playgroud)

然后,在模板内部:

{% for i in variable|get_range %}
    <img src=...>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)