Как сделать ajax пагинацию с параметрами QueryString в Django?

Я хочу создать пагинацию с несколькими параметрами QueryString, я создал обычную пагинацию только с помощью Django, но при создании Ajax пагинации с несколькими QueryString я столкнулся с проблемами.

Мои взгляды:

    def products(request):
    products = Products.objects.all()
        if   request.method == 'GET':
            per_page = request.GET.get("option")
            
            
            paginator = Paginator(products, per_page)  # data from get request is not passed properly
            page = request.GET.get('page')
            try:
                product_list = paginator.page(page)
            except PageNotAnInteger:
               
                 product_list = paginator.page(1)
            except EmptyPage:
           
                 product_list = paginator.page(paginator.num_pages)
return render(request, './item/shop.html', {'products': products})

Мой параметр запроса, представляющий html:

<select name="show-product-count" class="form-control" id= "show-product-count">
                                            <option value="9">Show 9</option>
                                            <option value="12" selected="selected">Show 12</option>
                                            <option value="24">Show 24</option>
                                            <option value="36">Show 36</option>
                                        </select>

Мой Ajax/Jquery:

$(document).ready(function () {
 $("#show-product-count").on("change", function(){
    var selectedValue = $(this).val();
  
    $.ajax({
      url : $(this).data('url'),
      type : "GET",
      data : {"option" : selectedValue},
      dataType : "json",
      success : function(){
  
      }
    });
  });



})

Вы делаете запрос get с данными в теле (не уверен, что это вообще возможно), но ваше представление проверяет параметры запроса.

Измените ваш ajax запрос так, чтобы он отправлял данные в качестве параметра запроса:

$(document).ready(function () {
 $("#show-product-count").on("change", function(){
    var selectedValue = $(this).val();
 
    $.ajax({
      url : $(this).data('url')+'?option='+selectedValue,
      type : "GET",
      success : function(){
  
      }
    });
  });
})
Вернуться на верх