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")