詳解django的serializer序列化model幾種方法
序列化是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。與序列化相對的是反序列化,它將流轉(zhuǎn)換為對象。這兩個過程結(jié)合起來,可以輕松地存儲和傳輸數(shù)據(jù)
方法一:通過繼承View類,重寫get方法,獲取商品的前是前十條數(shù)據(jù),通過serialize序列化數(shù)據(jù),返回?cái)?shù)據(jù)響應(yīng)。
from django.views.generic import View
from goods.models import Goods
from django.core import serializers
from django.http import HttpResponse
class GoodsListView(View):
def get(self,request):
"""
通過django的view實(shí)現(xiàn)商品列表頁
:param request:
:return:
"""
#返回前所有商品的前10條數(shù)據(jù)
goods_list = Goods.objects.all()[:10]
#直接轉(zhuǎn)換成json類型的字符串
data = serializers.serialize("json",goods_list)
#注意要加上:"application/json",否則在瀏覽器顯示不正常
return HttpResponse(data,"application/json")
方法二:通過繼承View類,重寫get方法,獲取指定獲取某些字段商品的前十條數(shù)據(jù),通過serialize序列化數(shù)據(jù),返回?cái)?shù)據(jù)響應(yīng)。
from django.views.generic import View
from goods.models import Goods
from django.http import HttpResponse
import json
class GoodsListView(View):
#重寫get方法
#django返回第一種方式
def get(self,request):
# 得到商品前10條數(shù)據(jù)
goods=Goods.objects.all()[:10]
goods_list=[]
for good in goods:
item={}
item['name']=good.name
item['click_num']=good.click_num
item['shop_price']=good.shop_price
goods_list.append(item)
response_data=json.dumps(goods_list,ensure_ascii=False)
#python字符串 設(shè)置為utf-8編碼
return HttpResponse(response_data,'application/json')
方法三:使用Jsonresponse,通過繼承View類,重寫get方法,獲取商品的前是前十條數(shù)據(jù),通過serialize序列化數(shù)據(jù),返回?cái)?shù)據(jù)響應(yīng),工作中我們常用第三種方法返回JSON數(shù)據(jù)。
from django.views.generic import View
from goods.models import Goods
from django.core import serializers
import json
from django.http import JsonResponse
class GoodsListView(View):
def get(self,request):
"""
通過django的view實(shí)現(xiàn)商品列表頁
:param request:
:return:
"""
#返回前所有商品的前10條數(shù)據(jù)
goods_list = Goods.objects.all()[:10]
#序列化,把內(nèi)存中的python對象,轉(zhuǎn)換成網(wǎng)絡(luò)中能夠傳輸?shù)膶ο?
#直接轉(zhuǎn)換成json類型的字符串
data = serializers.serialize("json",goods_list)
#轉(zhuǎn)換成字典
data = json.loads(data)
return JsonResponse(data,safe=False)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- django model object序列化實(shí)例
- Django model序列化為json的方法示例
- Django如何批量創(chuàng)建Model
- Django model重寫save方法及update踩坑詳解
- django Model層常用驗(yàn)證器及自定義驗(yàn)證器詳解
- django models里數(shù)據(jù)表插入數(shù)據(jù)id自增操作
- Django更新models數(shù)據(jù)庫結(jié)構(gòu)步驟
- django實(shí)現(xiàn)將后臺model對象轉(zhuǎn)換成json對象并傳遞給前端jquery
- 通過代碼簡單了解django model序列化作用
相關(guān)文章
Python Numpy 控制臺完全輸出ndarray的實(shí)現(xiàn)
這篇文章主要介紹了Python Numpy 控制臺完全輸出ndarray的實(shí)現(xiàn)方式,希望給大家做個參考,一起跟隨小編過來看看吧2020-02-02
Python正則表達(dá)式使用經(jīng)典實(shí)例
本文給大家總結(jié)了17種python正則表達(dá)式使用經(jīng)典實(shí)例,非常不錯具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-06-06
Python讀取含url圖片鏈接的txt文檔方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了三種Python讀取含url圖片鏈接的txt文檔方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
Micropython固件使用Pico刷固件并配置VsCode開發(fā)環(huán)境的方法
這篇文章主要介紹了Micropython固件使用Pico刷固件并配置VsCode開發(fā)環(huán)境的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-07-07
對python使用telnet實(shí)現(xiàn)弱密碼登錄的方法詳解
今天小編就為大家分享一篇對python使用telnet實(shí)現(xiàn)弱密碼登錄的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python腳本判斷 Linux 是否運(yùn)行在虛擬機(jī)上
這篇文章主要介紹了Python腳本判斷 Linux 是否運(yùn)行在虛擬機(jī)上,本文講解了判斷 OpenVZ/Xen PV/UML、判斷 VMware/Xen HVM/KVM、判斷 VirtualBox/Virtual PC等方法,需要的朋友可以參考下2015-04-04
conda安裝tensorflow和conda常用命令小結(jié)
這篇文章主要介紹了conda安裝tensorflow和conda常用命令小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02

