Jinja / Django for 循环范围不起作用
Posted
技术标签:
【中文标题】Jinja / Django for 循环范围不起作用【英文标题】:Jinja / Django for loop range not working 【发布时间】: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 loop 和 range)和上一个链接都告诉我这应该适用于范围和变量。
【问题讨论】:
看看here。不幸的是,Django 模板不支持 range 函数。 Errrrg。谢谢,弗兰迪。 【参考方案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 %
【讨论】:
以上是关于Jinja / Django for 循环范围不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 jinja (django) 中使用 for 循环显示最新的 5 个订单
如何在 Jinja2 模板 Django 中计算循环“for in”中的所有元素