1 from django.shortcuts import HttpResponse 2 from django.http import JsonResponse 3 from django.core import serializers 4 from app01.models import Person 5 import json 6 7 8 def getPerson1(request): 9 """用HttpResponse,把字典以json格式传回""" 10 if request.method == "GET": 11 res = {"status": "错误", "data": "1th", "city": "杭州"} 12 # return HttpResponse(json.dumps(res, ensure_ascii=False)) # 少了content_type,默认application/text 13 return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8") 14 15 16 def getPerson2(request): 17 """用JsonResponse,把字典以json格式传回""" 18 if request.method == "GET": 19 res = {"status": "错误", "data": "1th", "city": "杭州"} 20 # return JsonResponse(res) # 这样中文会乱码 21 return JsonResponse(res, json_dumps_params={'ensure_ascii': False}) 22 23 24 def getPerson3(request): 25 """用HttpResponse,serialize序列化对象,把对象以json格式传回""" 26 if request.method == "GET": 27 res = serializers.serialize("json", Person.objects.all()) # 把所有Person对象序列化 28 return HttpResponse(json.dumps(json.loads(res), ensure_ascii=False), content_type="application/json,charset=utf-8") 29 30 31 def getPerson4(request): 32 """用JsonResponse,serialize序列化对象,把对象以json格式传回""" 33 if request.method == "GET": 34 res = serializers.serialize("json", Person.objects.all()) # 把所有Person对象序列化 35 res = json.loads(res) # 把字符串转成json格式 36 return JsonResponse(res, json_dumps_params={'ensure_ascii': False}, safe=False) 37 38 39 def setPerson(request): 40 if request.method == "POST": 41 data = json.loads(request.body) # 转成字典 42 Person.objects.create(name=data["name"], age=data["age"]) 43 # 方式一: JsonResponse返回 44 return JsonResponse({"status": 200, "message": "成功"}, json_dumps_params={'ensure_ascii': False}, safe=False) 45 # 方式二: HttpResponse返回 46 return HttpResponse(json.dumps({"status": 200, "message": "成功"}, ensure_ascii=False), content_type="application/json,charset=utf-8")