通过 Snippet 使用 Wagtail Collections 作为图像,你如何遍历它们以在模板中显示?

Using Wagtail Collections for Images via Snippet, how do you iterate through them for display in templates?

我有一个使用大量图像的网站(根据要求,一个页面的范围可以是 12-40 张)。使用 ImageChooserPanel 一次添加单个图像的用户体验相当差。我认为将所有图像添加到 collection,然后将所述 collection 应用到页面很有意义。

在这里搜索后,原则上我喜欢@kalob-taulien提供的解决方案:(tldr;添加 collections 作为片段并使用 SnippetChooserPanel 到 select相关collection)

我看过 gasman 链接到的那个,但这对我来说意义不大(从上下文来看——我真的是新手)。话虽如此,我正在努力利用我链接到的解决方案。如果您完全按照 Kalob 所说添加 collections,那么您如何在模板中循环显示这些图像?

我是 Django/Wagtail 的新手,所以我的措辞可能不太好。为了将其置于上下文中,使用添加图像的 ImageChooserPanel 方法,我会这样做:

{% for item in page.gallery_images.all %}
   {% image item.image width-352 format-jpeg as item_352 %}
   ...

如何对包含图像的 Collection 执行相同的操作?我试过 page.collection,猜到了 page.collection.image(s),还有很多;我似乎无法锻炼如何访问图像。

好的,所以我终于弄明白了。我不知道为什么我昨天没有想到这个!向为此浪费时间的任何人道歉。

我会分享我的解决方案,以防其他人感兴趣,但如果您想到更有效的方法,请继续分享。这可行,但我怀疑这很不经济。

我为我的模型添加了上下文(基于我问题中链接的 post):

from wagtail.images.models import Image

class CustomPage(Page)
   ...
   def get_context(self, request):
      context = super().get_context(request)
      images = Image.objects.filter(collection=self.collection)

      context['images'] = images
      return context
   ...

我的模板图像再现现在看起来非常简单:

   ...
   {% for item in images %}
      {% image item width-352 format-jpeg as item_352 %}
      ...

结果是,用户体验得到改善。现在,我们创建一个集合,将所有图像文件一次性放入该集合(作为单一的多上传)和 select 页面中的集合。我认为这已经是我目前所能得到的最接近 'gallery upload' 的解决方案了。非常欢迎替代品。