【问题标题】:Jinja / Django for loop range not workingJinja / Django for 循环范围不起作用
【发布时间】:2019-04-10 08:11:12
【问题描述】:

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

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

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

模板

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

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

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

我收到以下错误:

无法解析余数:'(5)' from 'range(5)'

如果我将参数字典中的列表传递给模板(并使用列表代替范围语句),它就可以工作;图像可以重复多次。

我错过了什么? Jinja 上的文档(for looprange)和上一个链接都告诉我这应该适用于范围和变量。

【问题讨论】:

  • 看看here。不幸的是,Django 模板不支持 range 函数。
  • Errrrg。谢谢,弗兰迪。

标签: django-templates jinja2


【解决方案1】:

Soooo.... 基于 Franndy 的评论,这不是 Django 自动支持的,并按照他们的 link,这导致 this link,我找到了如何编写自己的过滤器。

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 %}

【讨论】:

    猜你喜欢
    • 2011-03-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多