gpt4 book ai didi

python - Django 模板截断列表以显示前 n 个元素

转载 作者:可可西里 更新时间:2023-11-01 14:44:54 26 4
gpt4 key购买 nike

我有一个 Django 模板,我试图在其中将列表显示为 html 中的无序列表。目前,我使用 |length|slice 以非常困惑的方式完成了它:

{% if list_tasks %}
The following tasks will be removed from this group:
<ul>
{% for task in list_tasks|slice:":10" %}
<li>{{ task.name }}</li>
{% endfor %}
{% if list_tasks|length > 10 %}
<li>...and {{ list_tasks|length|add:"-10" }} other tasks</li>
{% endif %}
</ul>
{% endif %}

如果 list_tasks 有 253 个元素,输出是这样的:

The following tasks will be removed from this group:
- T06/081
- T15/0395
- T15/0545
- T11/723
- T13/758
- T14/1532
- T14/1512
- T14/1510
- T04/154
- T14/1528
- ...and 243 other tasks

有没有更简洁的方法来做到这一点?

最佳答案

我会说你的解决方案还不错 :)

1.但是有些人可能会提到,如果它需要的不仅仅是模板中最基本的格式化操作,那么最好在 View 中格式化截断的列表。

看起来您正在以与其余实际任务相同的方式显示最后的“...其他任务”行,因此这将是最干净的方法。

在你看来是这样的,然后在模板中访问 truncated_tasks:

truncate_to = 10
truncated_tasks = tasks[:truncate_to]
if len(tasks) > truncate_to:
truncated_tasks.append('...and %s other task(s)' % (len(tasks)-truncate_to))

2.虽然,根据观众的不同,我可能更愿意将整个列表推送到模板并使用 js 片段/插件来隐藏/显示其他条目,以防万一有人想查看/复制粘贴完整列表:)

关于python - Django 模板截断列表以显示前 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31846715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com