首页 > 解决方案 > 我的 Django 项目中的 AJAX 分页指向“找不到页面”

问题描述

我的 django 应用程序有一个最喜欢的部分,其中包含一个最喜欢的列表,供用户在其中保存最喜欢的产品。现在,用户可以使用常规的 Django 分页在每页 5 个项目上浏览收藏列表。但我想要更流畅的用户体验,我想使用 AJAX 来显示内容。

视图.py:

def pagination(request):    
    model = SavedProduct.objects.all()    
    number_of_item = 5   
    paginatorr = Paginator(model,number_of_item)    
    first_page = paginatorr.page(1).object_list    
    page_range = paginatorr.page_range
    context = {
    'paginatorr':paginatorr,
    'first_page':first_page,
    'page_range':page_range
    }
    if request.method == 'POST':
        page_n = request.POST.get('page_n', None) 

        serializer = pagination_ser(paginatorr.page(page_n).object_list, many=True) 
        return JsonResponse(serializer.data, safe=False)
    return render(request, 'register/ajax.html',context)  

网址.py:

app_name = 'register'
urlpatterns = [
    path('pagination/', views.pagination, name='pagination'),    
    ]

ajax.html:

<body> 
    <div id="register_list">
        {% for i in first_page %}
        <h2>{{i.sub_product.real_name}}</h2>
        {% endfor %}
    </div>

    {% for i in page_range %}
    <button class='fav_nav' href="{{i}}">{{i}}</button>
    {% endfor %}

脚本.js:

$('.fav_nav').on('click',function(event) {
  event.preventDefault();     
  var page_n = $(this).attr('href');
  console.log(page_n)
  var url = '/register/pagination/'; 
      $.ajax({
              type: "POST",
              url: url, 
              data : {    
              page_n : page_n, 
              csrfmiddlewaretoken: '{{ csrf_token }}',
          },
          success: function (resp) {                
              $('#register_list').html('')
             $.each(resp, function(i, val) {                 
              $('#register_list').append('<h2>' + val.name + '</h2>')
             });
          },
          error: function () {}
      }); 
}); 

但是event.preventDefault()不起作用,每当我单击分页 ling 时,我都会收到“找不到页面”错误。

标签: jquerydjangoajax

解决方案


推荐阅读