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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM