設計總結
- 校驗用戶數據
例如傳入參數是否存在,格式是否正確,是否可重複等判斷; - 將前端傳入的請求數據轉換(json格式)轉換爲模型類對象;反序列化;
- 反序列化:
將格式如json,xml轉換爲程序中的類型;
將json格式的字符串轉換爲Django中的模型類對象;
- 反序列化:
#1. 先將json格式數據轉換爲嵌套字典列表
json_data = request.body.decode('utf-8')
python_data= json.loads(json_data,encoding='utf-8')
#2.將字典轉換爲模型類對象
project = Projects.objects.create(**python_data)
- 操作數據庫;
- 將模型類對象轉換爲響應的數據(json格式)
- 序列化:
將程序中的類型轉換爲json,xml;
Django中的模型類對象轉換爲json格式的字符串;
- 序列化:
#將其餘數據格式轉爲前端需要的json數據類型
return JsonResponse(one_dict, safe=False)
1. 序列化
首先思考下:內存中的字典、列表、集合以及各種對象,如何保存到一個文件中?
- 設計一套協議,按照某種規則,把內存中的數據保存到文件中,文件是一個個字節序列。所以必須把數據額轉換爲字節序列,輸出到文件,這就是序列化,反之,從文件的字節 序列恢復到內存中,就是反序列化。
- 反序列化則相反
序列化在Json中: - json().dump:把數據轉成json格式字符串並寫入文件
- json().dumps:讀取文件數據,並轉成json格式字符串
2.增刪改查的步驟
- 增
校驗請求參數 -> 反序列化查詢到的數據 -> 保存數據 -> 將保存的對象序列化並返回 - 刪
判斷要刪除的數據是否存在 -> 執行數據刪除 - 改
判斷要修改的數據是否存在 -> 校驗請求參數 -> 反序列化查詢到的數據 -> 保存數據 -> 將保存的數據序列號並返回 - 查
查詢數據庫 -> 將查詢到的數據序列化並返回
痛點
- 代碼冗餘極其嚴重,不符合優開發風格(代碼能少寫就少寫)
- 數據校驗非常麻煩,且可複用性差
- 編碼沒有統一的規範,雜亂無章的感覺
- 僅支持json格式的傳參,不支持form表單傳參
- 僅能返回json格式的數據,其他類型不支持
- 列表頁視圖沒有分頁,過濾,排序功能