Как вывести возврат Django Ajax в виде данных шаблона?

Я хочу вывести Products данные, возвращаемые следующими представлениями в шаблоне. Когда я проверяю контекст, он печатает правильные данные, но когда я пытаюсь напечатать данные в шаблоне, он ничего не показывает. Я проверил Networks в консоли браузера, данные вызываются там, но я не знаю, почему они не печатаются в представлениях

Шаблон

 {% for product in products%}
                    {{product.name}}
                    {%endfor%}

Мой Ajax:

$(document).ready(function() {
    var compare = localStorage.getItem("comparisionItems");
    var compareObj = JSON.parse(compare);
    
    
    
    console.log(compareObj)
    
   
      
    $.ajax({
      url: './compare',
      type: "POST",
      data: compare,
      headers: { "X-CSRFToken": $.cookie("csrftoken") },
      dataType: "json",
      contentType : "application/json",
      processData: "false",
      success: function (data) {
        location.reload();
          
       },
      
    });
});

Views.py

def compare(request):
    is_ajax = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
    if is_ajax and request.method == "POST":             
        data = json.loads(request.body)     
        compare_ids = data['itemIds']      
        products = Products.objects.filter(id__in=compare_ids)   
        print(products)   
        context={'products':products}
        return render(request,'./compare.html', context)
    else:
     return render(request,'./compare.html')

QuerySets являются ленивыми!
Когда вы вызываете функцию print(), продукты queryset оцениваются немедленно

Вы можете использовать all(), чтобы он оценивался в вашем шаблоне:

products = Products.objects.filter(id__in=compare_ids).all()

Также взгляните на это documentions

Вернуться на верх