Loading

python Django API返回json格式数据

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

 

posted @ 2020-04-07 19:56  wsongl  阅读(3338)  评论(0编辑  收藏  举报