django“str”对象没有属性“_meta”

r12*_*597 4 python django json

对不起我的英语不好。我有来自另一台服务器的一些数据,但我需要像 JSON 一样输出这些数据。

如果我在控制台中打印响应:

{
    'responseStatus': {
        'status': [],
    },
    'modelYear': [
        1981,
        1982
      
    ]
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我像有错误一样返回此响应HttpResponse

AttributeError:“str”对象没有属性“_meta”

这是我的代码:

data = serializers.serialize('json', response, ensure_ascii=False)
return HttpResponse(data, content_type="application/json")
Run Code Online (Sandbox Code Playgroud)

更新:

我尝试过这个:

from django.http import JsonResponse

def some_view(request):
    ...
    return JsonResponse(response, safe=False)
Run Code Online (Sandbox Code Playgroud)

但有错误:

“ModelYears”类型的对象不可 JSON 序列化

更新:

我确实是这样的:

import json
from django.http import JsonResponse

def some_view(request):
        ...
        return JsonResponse(json.loads(response))
Run Code Online (Sandbox Code Playgroud)

但有错误:

the JSON object must be str, bytes or bytearray, not 'ModelYears'
Run Code Online (Sandbox Code Playgroud)

ikk*_*kuh 5

Django 文档对框架的描述如下serializers

\n\n
\n

Django\xe2\x80\x99s 序列化框架提供了一种将 \xe2\x80\x9c\xe2\x80\x9d Django 模型转换为其他格式的机制。

\n
\n\n

该错误表明您的变量responsestringDjango 模型对象而不是 Django 模型对象。该字符串似乎有效,JSON因此您可以使用JsonResponse

\n\n
import json\nfrom django.http import JsonResponse\n\n# View\nreturn JsonResponse(json.loads(response))\n
Run Code Online (Sandbox Code Playgroud)\n