django序列化serializers過(guò)程解析
這篇文章主要介紹了django序列化serializers過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
DRF的核心 就是 前后端分離的核心
前后端分離開(kāi)發(fā)的核心:
- 將模型轉(zhuǎn)換為json 稱之為 序列化
- 將json轉(zhuǎn)換為模型 稱之為 反序列化
Django的序列化工具讓你可以將Django的模型‘翻譯'成其它格式的數(shù)據(jù)。通常情況下,這種其它格式的數(shù)據(jù)是基于文本的,并且用于數(shù)據(jù)交換\傳輸過(guò)程。
序列化數(shù)據(jù)
Django為我們提供了一個(gè)強(qiáng)大的序列化工具serializers。使用它也很簡(jiǎn)單,如下所示:
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導(dǎo)入它,然后調(diào)用它的serialize方法,這個(gè)方法至少接收兩個(gè)參數(shù),第一個(gè)是你要序列化成為的數(shù)據(jù)格式,這里是‘xml',第二個(gè)是要序列化的數(shù)據(jù)對(duì)象,數(shù)據(jù)通常是ORM模型的QuerySet,一個(gè)可迭代的對(duì)象。
就是這么簡(jiǎn)單!!
序列化指定字段
如果你不想序列化模型對(duì)象所有字段的內(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}}]
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python同時(shí)遍歷兩個(gè)list用法說(shuō)明
這篇文章主要介紹了python同時(shí)遍歷兩個(gè)list用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05在VSCode中搭建Python開(kāi)發(fā)環(huán)境并進(jìn)行調(diào)試
這篇文章介紹了在VSCode中搭建Python開(kāi)發(fā)環(huán)境并進(jìn)行調(diào)試的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Python continue繼續(xù)循環(huán)用法總結(jié)
本篇文章給大家總結(jié)了關(guān)于Python continue繼續(xù)循環(huán)的相關(guān)知識(shí)點(diǎn)以及用法,有需要的朋友跟著學(xué)習(xí)下吧。2018-06-06python sorted函數(shù)的小練習(xí)及解答
這篇文章主要介紹了python sorted函數(shù)的小練習(xí)及解答,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09PyCharm新建.py文件時(shí)默認(rèn)添加信息的實(shí)現(xiàn)
這篇文章主要介紹了PyCharm新建.py文件時(shí)默認(rèn)添加信息的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07python3 googletrans超時(shí)報(bào)錯(cuò)問(wèn)題及翻譯工具優(yōu)化方案 附源碼
這篇文章主要介紹了python3 googletrans超時(shí)報(bào)錯(cuò)問(wèn)題及翻譯工具優(yōu)化方案 附源碼,本文給大家分享解決方法,通過(guò)實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2020-12-12