我只是需要一些帮助,我正在制作一个Ajax方法来加载网站中的一些内容:
这是我的方法:
def get_subcat(request, id):
sub_categories = SubCategory.objects.filter(parent_category=id)
return HttpResponse(sub_categories)
这是ajax方法:
function menu_element_hover(id){
$.ajax({
url:'/catalog/get_subcat/'+id
}).done(function(data){
alert(data);
}).fail(function(error){
alert('error');
});
}
问题是,我需要一个Json响应,但我得到的是一个带有子类别的String,例如:SnorkelsShirts
如果有人可以帮助我,请:D,不理解!
答案 0 :(得分:1)
自Django 1.7以来,有一个JsonResponse
class在参数中获取Python对象并返回正确的HttpResponse
。
from django.http import JsonResponse
sub_categories = SubCategory.objects.filter(parent_category=id)
return JsonResponse(sub_categories, safe=False) # Without safe flag, sub_catgeories should be a dict
答案 1 :(得分:0)
sub_categories = SubCategory.objects.filter(parent_category=id)
返回queryset,如果你把它作为HttpResponse返回,那么它会尝试将它们强制转换成人类可读的东西 - 比如字符串。
如果你想返回json,那么首先你需要做一些像
这样的事情from django.utils import simplejson
return HttpResponse(simplejson.dumps(sub_categories))
但是你会遇到下一个问题,因为queryset不是json serializeable。
总而言之,你需要做的是把内容序列化为json格式,如果你想在浏览器/服务器之间移动json,因为HttpResponse不是一些神奇的类,可以猜出你想要什么和就这么做。