Пагинация с AJAX в Django - PullRequest
1 голос
/ 05 мая 2020

У меня есть страница учетной записи, на которой объекты, сохраненные пользователем в базе данных, отображаются в виде списка.

Я использую Pagination для навигации по различным объектам. Все работает как надо.

Но теперь я хотел бы использовать AJAX поверх него. Я уже использую его для сохранения и удаления объектов из списка, но в этом случае намного сложнее .... или нет.

Мой список загружен на страницу, url которой содержит user_id для фильтрации объектов.

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

Мой AJAX:

$(".next-button").on('click', function(event) {
    event.preventDefault();
    var page_n = $(this).attr('href');      
    url = '/register/pagination'
    console.log(page_n);
    $.ajax({
        type: "POST",
        url: url, 
        data : {               
            'page_n' : page_n, 
            'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val()
    },
    success: function (data) {
        console.log(data);

    },
    error: function () {}
});  
});

My views.py:

def account(request, user_id):

    if request.method=='POST':        
        data['success'] = True
        return JsonResponse(data)

    else:              
        sub_list = SavedProduct.objects.filter(username = user_id)
        paginator = Paginator(sub_list, 5)
        page_number = request.GET.get('page')
        saved_list = paginator.get_page(page_number) 

        context = {
            'saved_list': saved_list,              
        }
        return render(request, 'account/account.html', context) 

Мои URL:

app_name = 'register'
urlpatterns = [
    path('<int:user_id>/', views.account, name='account'),
    path('delete/', views.delete, name='delete'),
    path('pagination', views.account, name='pagination'), 
    ] 

My HTML:

{% if saved_list.has_next %}
        <span><a class='next-button' href="?page={{ saved_list.next_page_number }}"> {% csrf_token %} next</a></span>
        {% endif %}
...