У меня есть страница учетной записи, на которой объекты, сохраненные пользователем в базе данных, отображаются в виде списка.
Я использую 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 %}