抱歉我的英文。我有一些来自另一台服务器的数据,但我需要输出像JSON这样的数据。
如果我在控制台中打印响应:
{
'responseStatus': {
'status': [],
},
'modelYear': [
1981,
1982
]
}
但是,如果我返回此响应,例如HttpResponse
我有错误
属性错误:' str'对象没有属性' _meta'
这是我的代码:
data = serializers.serialize('json', response, ensure_ascii=False)
return HttpResponse(data, content_type="application/json")
UPD:
我确实喜欢这个
from django.http import JsonResponse
def some_view(request):
...
return JsonResponse(response, safe=False)
但有错误:
类型对象' ModelYears'不是JSON可序列化的
UPD:
我确实喜欢这个
import json
from django.http import JsonResponse
def some_view(request):
...
return JsonResponse(json.loads(response))
但有错误
the JSON object must be str, bytes or bytearray, not 'ModelYears'
答案 0 :(得分:1)
Django docs说明了serializers
框架的以下内容:
Django的序列化框架提供了一种将Django模型“转换”为其他格式的机制。
错误表明您的变量response
是string
而不是Django模型对象。该字符串似乎有效JSON
,因此您可以使用JsonResponse:
import json
from django.http import JsonResponse
# View
return JsonResponse(json.loads(response))
答案 1 :(得分:0)
用以下内容替换您的代码:
from django.http import JsonResponse
def some_view(request):
...
return JsonResponse(response)
而不是通过httpresponse序列化和发送它。
答案 2 :(得分:0)
这适用于python 3.6和Django 2.0
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse, JsonResponse
import requests
@login_required()
def get_some_items(request):
headers = {"Authorization": "Token uydsajbkdn3kh2gj32k432hjgv4h32bhmf"}
host = "https://site/api/items"
response = requests.get(host, headers=headers)
result = JsonResponse(response.json())
return HttpResponse(result, content_type='application/json')