Как сделать 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(){
}
});
});
})