如何使用Django模板识别顺序列表中的间隙
如果我的django模板中有一个有序的顺序列表:如何使用Django模板识别顺序列表中的间隙,django,templates,Django,Templates,如果我的django模板中有一个有序的顺序列表: my_list = [ (1, "Billy Holiday"), (2, "Louis Armstrong"), # Number 3 is missing! (4, "Ella Fitzgerald"), (5, "Frank Sinatra"), ] 我想在我的html中显示如下内容: 1. Billy Holiday 2. Louis Armstrong -- Some rows may be
my_list = [
(1, "Billy Holiday"),
(2, "Louis Armstrong"),
# Number 3 is missing!
(4, "Ella Fitzgerald"),
(5, "Frank Sinatra"),
]
我想在我的html中显示如下内容:
1. Billy Holiday
2. Louis Armstrong
-- Some rows may be missing --
4. Ella Fitzgerald
5. Frank Sinatra
有没有一个聪明的方法可以做到这一点?我正试图使用Django模板来实现这一点。我们的想法是查看循环的上一次迭代,并根据计数器值确定是否缺少行。也许一个简单的方法是这样构建列表:
my_list = [
(1, "Billy Holiday"),
(2, "Louis Armstrong"),
(3, ""),
(4, "Ella Fitzgerald"),
(5, "Frank Sinatra"),
]
并写一个IF来处理循环中的空白数据。
< P>也许一个简单的方法是用这种方式构建列表:my_list = [
(1, "Billy Holiday"),
(2, "Louis Armstrong"),
(3, ""),
(4, "Ella Fitzgerald"),
(5, "Frank Sinatra"),
]
并写一个IF来处理循环中的空白数据。
看起来好像你试图把一些逻辑从视图移到模板。我强烈反对这种做法。它是不可测试的,更难维护,很可能会与DRY原则相冲突
因此,仅仅在视图中进行工作可能会更好 但是,如果您完全坚持希望在模板中完成此操作,则可以制作自己的模板过滤器: someapp/templatetags/app_tags.pyfrom django import template
register = template.Library()
@register.filter
def set_missing_items(collection):
new_list = []
last = 0
for item in collection:
if item[0] != last + 1:
new_list.append('-- Some rows may be missing --')
new_list.append(item)
last = item[0]
return new_list
然后按如下方式使用:
template.html
{% load app_tags %}
{% for item in list|set_missing_items %}
{{ item }}
{% endif %}
确保按照中的所有步骤操作,以使自定义筛选器正常工作(例如,使用uu init uuu.py文件具有适当的文件夹结构,确保安装了具有这些筛选器的应用程序等)。您似乎试图将一些逻辑从视图移动到模板。我强烈反对这种做法。它是不可测试的,更难维护,很可能会与DRY原则相冲突 因此,仅仅在视图中进行工作可能会更好 但是,如果您完全坚持希望在模板中完成此操作,则可以制作自己的模板过滤器: someapp/templatetags/app_tags.py
from django import template
register = template.Library()
@register.filter
def set_missing_items(collection):
new_list = []
last = 0
for item in collection:
if item[0] != last + 1:
new_list.append('-- Some rows may be missing --')
new_list.append(item)
last = item[0]
return new_list
然后按如下方式使用:
template.html
{% load app_tags %}
{% for item in list|set_missing_items %}
{{ item }}
{% endif %}
确保按照中的所有步骤操作,以使自定义筛选器正常工作(例如,使用_init__u;.py文件具有适当的文件夹结构,确保安装了具有这些筛选器的应用程序,等等).您需要使用jinja2而不是django模板,或者在视图中执行此操作。您需要使用jinja2而不是django模板,或者在视图中执行此操作