django for loop counter break

f4n*_*4nt 27 python django for-loop

希望这是一个快速/简单的方法.我知道通过自定义模板标签来解决这个问题的方法,但我很好奇是否有其他方法我在看.我为我的博客创建了各种各样的画廊功能,并且我有一个画廊列表页面,用于分割我的所有画廊.现在,我不想显示该列表中每个图库的所有照片,因为如果每个图库甚至有20个图像,那么如果我在5个帖子中分页,则该页面上有100个图像.那是浪费,而且是错误的做事方式.

我的问题是,有没有办法只显示照片集中的3张照片?我想做什么,但我认为不可能是(伪代码):

{% for photos in gallery.photo_set %}
   {% if forloop.counter lt 3 %}
     <img src="{{ photos.url }}">
   {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

从文档来看,除非我完全错过它,否则通过模板系统是不可能的.因此,我可以编写自己的各种模板标签来解决它.我可以从视角来做一些事情,但我没有深入研究这个想法.我的另一个选项是为模型提供预览字段,并允许用户在预览字段中选择他们想要的照片.

无论如何,有几个不同的选择,所以我想我会对观众进行调查,看看你是怎么做到的.任何意见表示赞赏.就个人而言,享受这种猫的皮肤有很多方法.

Ale*_*lli 77

使用:

{% for photos in gallery.photo_set|slice:":3" %}
Run Code Online (Sandbox Code Playgroud)

  • 使用切片过滤器还有一个好处.如果您传入的是Django QuerySet(而不是集合),则切片将流向基础SQL查询,从而限制页面将从数据库中检索的行数. (4认同)
  • 所以,我有我所有的选择,然后就是你一直在忽视的明显的一个.感谢您的提示,为我省去了大量的麻烦! (2认同)