1.什麼是序列化組件 在django中,自帶一個序列化組件,它是用來將數據進行整理、轉化成特定的為一個特定的格式(比如json數據格式),然後傳輸給前端,以便前端對數據進行處理操作。 2.為什麼要用序列化組件 當我們從資料庫取出一些數據時,我們需要將數據轉成特定的格式,比如列表套字典的形式,然後將這 ...
1.什麼是序列化組件
在django中,自帶一個序列化組件,它是用來將數據進行整理、轉化成特定的為一個特定的格式(比如json數據格式),然後傳輸給前端,以便前端對數據進行處理操作。
2.為什麼要用序列化組件
當我們從資料庫取出一些數據時,我們需要將數據轉成特定的格式,比如列表套字典的形式,然後將這些數據序列化成json的格式傳輸給前端,這就需要我們在後端把資料庫里的數據每一個都遍歷取值出來,這樣比較麻煩,而且當數據欄位很多的時候,我們很多遍歷出來!代碼如下:
後端代碼:
from django.http import JsonResponse # 導入JsonResponse模塊
from app01 import models
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.gender
}
user_list.append(tmp) # 添加到列表中
return JsonResponse(user_list, safe=False) # 轉換成json格式返回給前端頁面(safe屬性為ture則表示只能傳dict字典的形式,因為現在為列表的形式,所以改為False)
前端代碼:
<body>
{% for user_obj in user_list %}
<p>{{ user_obj }}</p>
{% endfor %}
</body>
所以,這時候django給我們提供了一個自帶的序列化組件,它能夠將從資料庫取出的數據,自動整合成一個特定的格式!大大減少了我們的工作!
3.django自帶的序列化組件
自帶的序列化模塊為serializes
# 格式:serializers.serialize('序列化成什麼格式',數據)
# 示例:
from django.core import serializers # 導入
def ab_ser(request):
user_queryset = models.User.objects.all()
res = serializers.serialize('json',user_queryset) # 序列化成json格式數據
"""會自動幫你將數據變成json格式的字元串 並且內部非常的全面"""
return HttpResponse(res) # 返回給前端頁面
'''
[{"model": "app01.user",
"pk": 1,
"fields": {"username": "gary", "age": 19, "gender": 1}},
{"model": "app01.user",
"pk": 2,
"fields": {"username": "tom", "age": 20, "gender": 2}},
{"model": "app01.user",
"pk": 3,
"fields": {"username": "kevin", "age": 29, "gender": 3}},
{"model": "app01.user",
"pk": 4,
"fields": {"username": "jack", "age": 38, "gender": 4}}]
'''
# 我們可以看到它幫我們處理的數據是非常全面的,
# 告訴了我們這個數據來自於哪一個應用下的拿一張表,還告訴了我們對應的主鍵值,和詳細信息