简体   繁体   English

如何打印 Django Ajax 返回作为模板数据?

[英]How to print Django Ajax return as Template Data?

I want to print Products data returned by following views on template.我想打印模板上以下视图返回的Products数据。 When I check the context its printing the correct data but when I try to print data in template it shows nothing.当我检查上下文时,它打印了正确的数据,但是当我尝试在模板中打印数据时,它什么也没显示。 I checked Networks inside browser console, data is called there but I dont know why its not printing to views我在浏览器控制台中检查了网络,那里调用了数据,但我不知道为什么它不打印到视图

Template模板

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

My Ajax:我的 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视图.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 are lazy!查询集很懒惰!
When you call print() function, products queryset evaluate immediately当您调用 print() function 时,产品查询集立即评估

You can use all() so it evaluate in your template:您可以使用 all() 以便它在您的模板中进行评估:

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

Also take a look at this documentions也看看这个文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM