1

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

在这里搜索后,原则上我喜欢@kalob-taulien 提供的解决方案:How to give user option to select a wagtail collection of images in page? (tldr;将集合添加为片段并使用 SnippetChooserPanel 选择相关集合)

我看过 gasman 链接的那个,但这对我来说没有多大意义(从上下文来看——我真的很陌生)。话虽如此,我正在努力利用我链接到的解决方案。如果您完全按照 Kalob 所说的那样添加集合,那么您如何在模板中遍历这些图像以进行显示?

我是 Django/Wagtail 的新手,所以我的措辞可能很糟糕。为了把它放在上下文中,使用 ImageChooserPanel 添加图像的方法,我会这样做:

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

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

4

1 回答 1

1

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

如果其他人有兴趣,我会分享我的解决方案,但如果您想到更有效的方法,请继续分享。这行得通,但我怀疑这是非常不经济的。

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

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 %}
      ...

结果是,用户体验得到了改善。现在,我们创建一个集合,将所有图像文件一次性放入该集合(作为单一的多次上传),然后在页面中选择所述集合。我认为这与我目前可以得到的“图库上传”解决方案一样接近。替代品非常受欢迎。

于 2020-01-27T21:25:32.193 回答