Проблема с разбиением на страницы трясогузки с помощью Waypoint Infinite Scroll

Я отлично реализовал Waypoint Infinite Scroll на обычной модели страницы для элементов художественной галереи. Эти предметы можно добавить в магазин с помощью флажка. Затем я использую страницу «Магазин» для фильтрации элементов галереи, отмеченных как распродажа. По какой-то причине, когда кажется, что функция бесконечной прокрутки отлично срабатывает на странице магазина, но новые элементы не отображаются.

Я получаю ответ 200 от сервера, и в консоли не регистрируются ошибки:

[12/Dec/2020 11:40:46] "GET /shop/?page=2 HTTP/1.1" 200 26

Страница, с которой он работает:

class Gallery(Page):

    intro = RichTextField(blank=True, help_text = "Text for the top of your gallery page. (Optional - recommended to leave empty for a more simplistic look.)")

    content_panels = Page.content_panels + [FieldPanel('intro', classname = "full")]

    subpage_types = ['InstallationPage']
    # parent_page_types = []

    def get_context(self, request):
        context = super().get_context(request)
        filtered_medium = request.GET.get('medium', None)
        if filtered_medium:
            context['filtered'] = True
            mediums = InstallationMedium.objects.filter(name=filtered_medium)
            installations = InstallationPage.objects.child_of(self).order_by('-date').live().filter(mediums__in=mediums)
        else:
            mediums = InstallationMedium.objects.filter(installationpage__in=InstallationPage.objects.all()).distinct()
            installations = InstallationPage.objects.child_of(self).order_by('-date').live()
        paginator = Paginator(installations, 12)
        page = request.GET.get('page')
        try:
            pagin = paginator.get_page(page)
        except PageNotAnInteger:
            pagin = paginator.get_page(1)
        context['installations'] = pagin
        context['mediums'] = mediums
        return context

Страница магазина, где это не работает:

class Shop(RoutablePageMixin, Page):

    ajax_template = "shop/shop_item_ajax.html"

    def get_context(self, request):
        
        context = super().get_context(request)
        shop_items = GalleryItem.objects.filter(Q(direct_sale=True) | Q(external_sale=True)).order_by('latest_revision_created_at')
        paginator = Paginator(shop_items, 12)
        page = request.GET.get('page')

        try:
            items = paginator.get_page(page)
        except PageNotAnInteger:
            items = paginator.get_page(1)
        context['shop_items'] = items # shop_items for all items
        for item in items:
            print(item)
        return context

основной.js:

document.addEventListener('DOMContentLoaded', function() {

var infinite = new Waypoint.Infinite({
      element: $('.infinite-container')[0],
      onBeforePageLoad: function () {
        $('.loader').removeClass('d-none')
      },
      onAfterPageLoad: function ($items) {
        $('.loader').addClass('d-none')
      }
    });
...

магазин.html:

<div class = "row justify-content-center justify-content-md-start infinite-container">
    {% for item in shop_items %}
    <div class = "col-12 col-sm-6 col-md-4 col-xl-3 infinite-item">
        <div class = "row">
            <div class = "col d-flex justify-content-center text-center">
                <h4><a href = "/shop/{{ item.slug }}/">{{ item.title }}</a></h4>
            </div>
        </div>
    </div>

    {% empty %}
    Nothing for now!
    {% endfor %}
</div>

<div class = "row justify-content-center">
    <div class = "loader d-none">
        <div class = "loader-inner ball-pulse" id = "dropin-loading">
          <div></div>
          <div></div>
          <div></div>
        </div>
    </div>
</div>

{% if shop_items.has_next %}
<div class = "row justify-content-center">
    <a class = "infinite-more-link" href = "/shop/?page = {{ shop_items.next_page_number }}">More</a>
</div>
{% endif %}

Также нормально работает базовая пагинация. Если я нажму на гиперссылку, она загрузит страницу 2.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
337
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Моя проблема, конечно, была довольно простой. В классе Shop я добавил эту строку

ajax_template = "shop/shop_item_ajax.html"

из предыдущего погружения в функциональность ajax, и этот шаблон был пустым файлом, который я никогда не использовал, поэтому ничего не отображалось. Я удалил эту строку, и Waypoint Infinite работает так, как рекламируется.

Другие вопросы по теме