詳解django的serializer序列化model幾種方法
序列化是將對象狀態(tài)轉換為可保持或傳輸?shù)母袷降倪^程。與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕松地存儲和傳輸數(shù)據(jù)
方法一:通過繼承View類,重寫get方法,獲取商品的前是前十條數(shù)據(jù),通過serialize序列化數(shù)據(jù),返回數(shù)據(jù)響應。
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實現(xiàn)商品列表頁 :param request: :return: """ #返回前所有商品的前10條數(shù)據(jù) goods_list = Goods.objects.all()[:10] #直接轉換成json類型的字符串 data = serializers.serialize("json",goods_list) #注意要加上:"application/json",否則在瀏覽器顯示不正常 return HttpResponse(data,"application/json")
方法二:通過繼承View類,重寫get方法,獲取指定獲取某些字段商品的前十條數(shù)據(jù),通過serialize序列化數(shù)據(jù),返回數(shù)據(jù)響應。
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字符串 設置為utf-8編碼 return HttpResponse(response_data,'application/json')
方法三:使用Jsonresponse,通過繼承View類,重寫get方法,獲取商品的前是前十條數(shù)據(jù),通過serialize序列化數(shù)據(jù),返回數(shù)據(jù)響應,工作中我們常用第三種方法返回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實現(xiàn)商品列表頁 :param request: :return: """ #返回前所有商品的前10條數(shù)據(jù) goods_list = Goods.objects.all()[:10] #序列化,把內(nèi)存中的python對象,轉換成網(wǎng)絡中能夠傳輸?shù)膶ο? #直接轉換成json類型的字符串 data = serializers.serialize("json",goods_list) #轉換成字典 data = json.loads(data) return JsonResponse(data,safe=False)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python Numpy 控制臺完全輸出ndarray的實現(xiàn)
這篇文章主要介紹了Python Numpy 控制臺完全輸出ndarray的實現(xiàn)方式,希望給大家做個參考,一起跟隨小編過來看看吧2020-02-02Micropython固件使用Pico刷固件并配置VsCode開發(fā)環(huán)境的方法
這篇文章主要介紹了Micropython固件使用Pico刷固件并配置VsCode開發(fā)環(huán)境的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-07-07對python使用telnet實現(xiàn)弱密碼登錄的方法詳解
今天小編就為大家分享一篇對python使用telnet實現(xiàn)弱密碼登錄的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01