2016-11-17 44 views
0

這是從一個請求來獲得一個Django應用程序的所有對象,但沒有得到一個簡單的對象,如打印說,這只是一個字符串JSON響應不是一個普通的對象

的Javascript:

$.getJSON("/cadastro/getAllPessoas/", function(data){ 
    console.log(data); 
    console.log(typeof(data)); 
    console.log($.isPlainObject(data)); 
    //Raises error on isArrayLike(): 
    $.each(data,function(){ 
     arrayValues.push([this["pk"],this["fields"]["nome"]]); 
    }) 
    }); 

控制檯輸出:

[{"model": "cadastroapp.djangotestpessoa", "pk": 1, "fields": {"nome": "Gabriel"}}] 
string 
false 

views.py:

from django.core import serializers 
def getAllPessoas(request): 
    data = serializers.serialize('json', Pessoa.objects.all(), fields=('objectid','nome')) 
    return JsonResponse(data, safe=False) 
+0

你試過用'$ .parseJSON()'解析你的json-string嗎? – empiric

+0

是的,我知道的作品,但我想要避免額外的步驟 – Mojimi

回答

3

您在Django視圖中序列化兩次,因爲serializers.serialize和JsonResponse都轉換爲JSON。不要那樣做;只需返回帶有序列化值的正常響應。

return HttpResponse(data, content_type='application/json') 
+0

我添加了序列化器,因爲JsonResponse說查詢集不能序列化 – Mojimi

+0

是的。所以不要使用JsonResponse。 –

相關問題