Как передать данные на django ajax?
Как передать данные фильтра из модели/вида Django в ajax? Я пытался передать данные, но это не дает никакого результата. Поле возврата ajax пустое. Из метода request get я пытался передать данные, все работает нормально. С помощью метода ajax я попытался сделать следующее, но он выбрасывает просто пустую область. Я проверил на консоли, значение фильтра правильно передается в представления, но из представлений оно не получает данные правильно. Это проблема успеха ajax или у моих представлений есть какая-то другая проблема? Пожалуйста, помогите мне
Мой HTML:
<ul class="widget-body filter-items ">
{% for categories in categories%}
<li class = "sidebar-filter " data-filter="category" data-value="{{categories.id}}" ><a href="#">{{categories.name}}</a></li>
{% endfor %}
</ul>
<div class="product-wrapper row cols-lg-4 cols-md-3 cols-sm-2 cols-2">
{% for product in products%}
<div id = "product-wrapper" class="product-wrap product text-center">
{{product.name}}
{% endfor%}
</div>
</div>
Ajax:
$(document).ready(function () {
$('.sidebar-filter').on('click', function () {
var filterobj= {};
$(".sidebar-filter").each(function(index, ele){
/**var filterval = $(this).attr('data-value');*/
/**var filterval = $(this).value=this.attr('title');*/
/**var filterval = $(this).val($(this).text());*/
var filterval=$(this).data("value");
var filterkey = $(this).data('filter');
filterobj[filterkey]= Array.from(document.querySelectorAll
('li[data-filter=' + filterkey+'].active')).map(function(el){
/**return $(el).data("value");*/
return $(el).data("value")
/** return el.getAttribute('data-value');*/
});
});
console.log(filterobj)
$.ajax ({
url:"/products/filter-data",
data:filterobj,
datatype:'json',
success:function(res){
console.log(res.data)
var bodyOnly = $(res.data).find('.product-wrapper').html();
$('.product-wrapper').html(bodyOnly);
console.log(bodyOnly)
}
});
});
});
Мой views.py:
def catfilter(request):
categories = request.GET.getlist('category[]')
brands = request.GET.getlist('brands[]')
products=Products.objects.filter(is_published=True).order_by('-id')
if len(categories)>0:
products=Products.objects.filter(is_published=True).order_by('-id')
if len(brands)>0:
products=Products.objects.filter(is_published=True).order_by('-id')
json_sort=render_to_string("./ecommerce/shop.html",{'data':products})
return JsonResponse({'data':json_sort})