Используя коллекции трясогузок для изображений с помощью сниппета, как вы проходите через них для отображения в шаблонах? - PullRequest
0 голосов
/ 27 января 2020

У меня есть сайт, который использует много изображений (страница может варьироваться от 12-40 в зависимости от требований). Пользовательский опыт добавления одного изображения за раз с использованием ImageChooserPanel довольно скудный. Я думаю, что добавление всех изображений в коллекцию и последующее применение этой коллекции к странице имеет большой смысл.

После поиска здесь, в принципе, мне нравится решение, предоставленное @ kalob-taulien: Как дать пользователю возможность выбрать коллекцию изображений из трясогузки на странице? (tldr; добавить коллекции в качестве фрагмента и использовать SnippetChooserPanel для выбора соответствующей коллекции)

Я смотрел на ту, на которую ссылается газовик, но это не имеет особого смысла для меня (контекстуально - я действительно новичок в этом). Сказав это, я борюсь с использованием решения, с которым я связан. Если вы добавляете коллекции в точности так, как говорит Калоб, как вы затем выполняете эти изображения в шаблоне для отображения?

Я новичок в 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, и еще несколько; Я просто не могу понять, как получить доступ к изображениям.

1 Ответ

0 голосов
/ 28 января 2020

ОК, так что я в конце концов понял это. Я не знаю, почему я не подумал об этом вчера! Приношу извинения всем, кто потратил на это время.

Я поделюсь своим решением на случай, если кому-то еще будет интересно, хотя, если вы думаете о более эффективном способе, пожалуйста, поделитесь им. Это работает, но я подозреваю, что это довольно неэкономично.

Я добавил контекст в свою модель (которая была основана на сообщении, связанном в моем вопросе):

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

В результате пользовательский опыт улучшается. Теперь мы создаем коллекцию, помещаем все файлы изображений в одном go в эту коллекцию (как отдельную мультизагрузку) и выбираем эту коллекцию на странице. Я думаю, что сейчас это настолько близко, насколько я могу найти решение для загрузки галереи. Альтернативы очень приветствуются.

...