django序列化serializers過程解析
這篇文章主要介紹了django序列化serializers過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
DRF的核心 就是 前后端分離的核心
前后端分離開發(fā)的核心:
- 將模型轉(zhuǎn)換為json 稱之為 序列化
- 將json轉(zhuǎn)換為模型 稱之為 反序列化
Django的序列化工具讓你可以將Django的模型‘翻譯'成其它格式的數(shù)據(jù)。通常情況下,這種其它格式的數(shù)據(jù)是基于文本的,并且用于數(shù)據(jù)交換\傳輸過程。
序列化數(shù)據(jù)
Django為我們提供了一個強大的序列化工具serializers。使用它也很簡單,如下所示:
from django.core import serializers data = serializers.serialize("xml", SomeModel.objects.all())
data = serializers.serialize("json", Author.objects.all()) print(data) [{"model": "index.author", "pk": 1, "fields": {"name": "pfeiliu", "age": 19, "email": "789@163.com", "isActive": false}}, {"model": "index.author", "pk": 5, "fields": {"name": "lao wei", "age": 18, "email": "123@qq.com", "isActive": true}}, {"model": "index.author", "pk": 6, "fields": {"name": "WangDB", "age": 36, "email": "wangdb@163.com", "isActive": false}}, {"model": "index.author", "pk": 7, "fields": {"name": "WangDB", "age": 36, "email": "wangdb@163.com", "isActive": false}}, {"model": "index.author", "pk": 8, "fields": {"name": "WangDB", "age": 36, "email": "wangdb@163.com", "isActive": false}}, {"model": "index.author", "pk": 9, "fields": {"name": "WangDB", "age": 36, "email": "wangdb@163.com", "isActive": false}}, {"model": "index.author", "pk": 10, "fields": {"name": "WangDB", "age": 36, "email": "wangdb@163.com", "isActive": false}}, {"model": "index.author", "pk": 11, "fields": {"name": "WangDB", "age": 36, "email": "wangdb@163.com", "isActive": false}}, {"model": "index.author", "pk": 12, "fields": {"name": "WangDB", "age": 36, "email": "wangdb@163.com", "isActive": false}}, {"model": "index.author", "pk": 13, "fields": {"name": "WangDB", "age": 36, "email": "wangdb@163.com", "isActive": false}}, {"model": "index.author", "pk": 14, "fields": {"name": "WangDB", "age": 36, "email": "wangdb@163.com", "isActive": false}}]
首先,從djang.core導入它,然后調(diào)用它的serialize方法,這個方法至少接收兩個參數(shù),第一個是你要序列化成為的數(shù)據(jù)格式,這里是‘xml',第二個是要序列化的數(shù)據(jù)對象,數(shù)據(jù)通常是ORM模型的QuerySet,一個可迭代的對象。
就是這么簡單?。?/p>
序列化指定字段
如果你不想序列化模型對象所有字段的內(nèi)容,只想序列化某些指定的字段,可以使用fields參數(shù),如下所示:
from django.core import serializers data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size'))
data = serializers.serialize("json", Author.objects.all(),fields=('name','age')) print(data) [{"model": "index.author", "pk": 1, "fields": {"name": "pfeiliu", "age": 19}}, {"model": "index.author", "pk": 5, "fields": {"name": "lao wei", "age": 18}}, {"model": "index.author", "pk": 6, "fields": {"name": "WangDB", "age": 36}}, {"model": "index.author", "pk": 7, "fields": {"name": "WangDB", "age": 36}}, {"model": "index.author", "pk": 8, "fields": {"name": "WangDB", "age": 36}}, {"model": "index.author", "pk": 9, "fields": {"name": "WangDB", "age": 36}}, {"model": "index.author", "pk": 10, "fields": {"name": "WangDB", "age": 36}}, {"model": "index.author", "pk": 11, "fields": {"name": "WangDB", "age": 36}}, {"model": "index.author", "pk": 12, "fields": {"name": "WangDB", "age": 36}}, {"model": "index.author", "pk": 13, "fields": {"name": "WangDB", "age": 36}}, {"model": "index.author", "pk": 14, "fields": {"name": "WangDB", "age": 36}}]
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在VSCode中搭建Python開發(fā)環(huán)境并進行調(diào)試
這篇文章介紹了在VSCode中搭建Python開發(fā)環(huán)境并進行調(diào)試的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06Python continue繼續(xù)循環(huán)用法總結(jié)
本篇文章給大家總結(jié)了關(guān)于Python continue繼續(xù)循環(huán)的相關(guān)知識點以及用法,有需要的朋友跟著學習下吧。2018-06-06PyCharm新建.py文件時默認添加信息的實現(xiàn)
這篇文章主要介紹了PyCharm新建.py文件時默認添加信息的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07python3 googletrans超時報錯問題及翻譯工具優(yōu)化方案 附源碼
這篇文章主要介紹了python3 googletrans超時報錯問題及翻譯工具優(yōu)化方案 附源碼,本文給大家分享解決方法,通過實例代碼相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下2020-12-12