Пагинация постов в Django, как исправить?

Как исправить дублирование при автоматической пагинации? Есть шаблон home.html и home_list.html;

в home_list.html Json формат успешно передается, а вот Ajax хулиганит и при автоматической пагинации создает кучу повторных постов; как исправить?

<script>
$(document).ready(function(){
    var nextPageUrl = '/load-posts/';  // Используем URL для загрузки постов
    
    function loadMorePosts() {
        // Показываем элемент загрузки
        //$('#loading').text('Загрузка...');

        // Выполняем GET запрос к серверу
        $.get(nextPageUrl, function(data) {
            // Скрываем элемент загрузки
            //$('#loading').text('Загрузить еще');

            // Добавляем HTML с постами в конец контейнера
            $('#post_contenter').append(data.posts_html);

            // Обновляем URL следующей страницы
            nextPageUrl = data.next_page_url;
        }).fail(function() {
            // Обрабатываем ошибку запроса, если она произошла
            console.error('Ошибка при загрузке постов');
            // Скрываем элемент загрузки
            $('#loading').hide();
        });
    }

    // Обработчик события прокрутки страницы
    $(window).scroll(function() {
        if($(window).scrollTop() + $(window).height() >= $(document).height()) {
            // Вызываем функцию загрузки дополнительных постов
            loadMorePosts();
        }
    });

    
});
</script>

представление:

from django.shortcuts import render, redirect
from usercreatepost.forms import PostForm
from publication.models import Userpublication
from user.models import Profile****, Subscription
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.urls import reverse
from django.http import JsonResponse
from django.template.loader import render_to_string
from django.db.models import Q

@login_required
def create_post(request):
    form = PostForm(request.POST or None)

    # Если запрос - POST, сохраняем форму
    if request.method == 'POST':
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.save()
            return redirect('home')

    # Получаем ID пользователей, на которых подписан текущий пользователь
    subscribed_user_ids = Subscription.objects.filter(subscriber=request.user).values_list('target_user', flat=True)

    # Получаем все посты авторов, на которых подписан текущий пользователь
    subscribed_posts = Userpublication.objects.filter(author__in=subscribed_user_ids)

    # Получаем все посты текущего пользователя
    own_posts = Userpublication.objects.filter(author=request.user)

    # Объединяем списки постов
    all_posts = (subscribed_posts | own_posts).order_by('-time_create')

    # Получаем объект страницы постов для отображения
    page_posts = all_posts

    context = {'form': form, 'post_lists': page_posts, 'title': '**** | Новости'}
    return render(request, '****/home.html', context)




def load_posts(request):
    # Получаем номер страницы из запроса
    page_number = request.GET.get('page', 1)  # Устанавливаем значение по умолчанию на 1
    
    # Получаем ID пользователей, на которых подписан текущий пользователь
    subscribed_user_ids = Subscription.objects.filter(subscriber=request.user).values_list('target_user', flat=True)
    
    # Получаем все посты, на которых подписан текущий пользователь или которые он написал
    all_posts = Userpublication.objects.filter(Q(author__in=subscribed_user_ids) | Q(author=request.user))
    
    # Создаем объект Paginator
    paginator = Paginator(all_posts, 10)  # 10 постов на страницу
    
    try:
        # Получаем объекты для текущей страницы
        current_page_posts = paginator.page(page_number)
    except PageNotAnInteger:
        # Если номер страницы не является целым числом, показываем первую страницу
        current_page_posts = paginator.page(1)
    except EmptyPage:
        # Если номер страницы находится за пределами допустимого диапазона, возвращаем пустой ответ
        return JsonResponse({'posts_html': '', 'next_page_url': None})
    
    # Рендерим HTML с постами текущей страницы
    posts_html = render_to_string('****/home_list.html', {'posts': current_page_posts})

    # Получаем URL для следующей страницы, если она существует
    next_page_url = None
    if current_page_posts.has_next():
        next_page_url = f"{reverse('load_posts')}?page={current_page_posts.next_page_number()}"
    
    # Возвращаем JSON-ответ с HTML и URL следующей страницы
    return JsonResponse({'posts_html': posts_html, 'next_page_url': next_page_url})

Всё, я понял в чём дело, дважды загружал первую страницу , поэтому и отображались дубликаты первых 5 постов. вместо:

var nextPageUrl = '/load-posts/?page=' + loadedPage;

нужно было прописать

var nextPageUrl = '/load-posts/?page=' + (loadedPage + 1);
Вернуться на верх