Django自帶的序列化元件
阿新 • • 發佈:2022-12-12
Django自帶的序列化元件(為drf做鋪墊)
(drf:django rest framework)
#在前端獲取到,後端使用者表裡所有的資料,並且是列表套字典的格式
# views.py from django.http import JsonResponse def ab_ser(request): user_queryset = models.User.objects.all() user_list = [] for user_obj in user_queryset: tmp = { 'pk': user_obj.pk, 'username': user_obj.username, 'age': user_obj.age, 'gender': user_obj.get_gender_display() } user_list.append(tmp) return JsonResponse(user_list, safe=False)
前端顯示結果:
""" [ {"pk": 1,"username": "zhao","age": 19,"gender": "male"}, {"pk": 2,"username": "lisi","age": 20,"gender": "female"}, {"pk": 3,"username": "wangwu","age": 18,"gender": "others"}, {"pk": 4,"username": "tony","age": 22,"gender": 4} ] """ 前後端分離專案 作為後端開發,只需要寫程式碼將資料返回 能夠序列化返回給前端即可 再寫一個介面文件,告訴前端每個欄位代表的意思即可
藉助於內建序列化模組serializers
from django.core import serializers def ab_ser(request): user_queryset = models.User.objects.all() # user_list = [] # for user_obj in user_queryset: # tmp = { # 'pk': user_obj.pk, # 'username': user_obj.username, # 'age': user_obj.age, # 'gender': user_obj.get_gender_display() # } # user_list.append(tmp) # return JsonResponse(user_list, safe=False) # 序列化 res = serializers.serialize('json', user_queryset) # 自動將資料變成json格式的資料,並且內部非常的全面 return HttpResponse(res)
效果:
[
{
"model": "app01.user",
"pk": 1,
"fields": {"username": "zhao","age": 19,"gender": 1}
},
{
"model": "app01.user",
"pk": 2,
"fields": {"username": "lisi","age": 20,"gender": 2}
},
{
"model": "app01.user",
"pk": 3,
"fields": {"username": "wangwu","age": 18,"gender": 3}
},
{
"model": "app01.user",
"pk": 4,
"fields": {"username": "tony","age": 22,"gender": 4}
}
]
#後端開發寫介面就是利用序列化元件渲染資料,然後寫一個介面文件,