详解django的serializer序列化model几种方法


Posted in Python onOctober 16, 2018

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据

方法一:通过继承View类,重写get方法,获取商品的前是前十条数据,通过serialize序列化数据,返回数据响应。

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实现商品列表页
   :param request:
   :return:
   """
   #返回前所有商品的前10条数据
   goods_list = Goods.objects.all()[:10]
   #直接转换成json类型的字符串
   data = serializers.serialize("json",goods_list)
   #注意要加上:"application/json",否则在浏览器显示不正常
   return HttpResponse(data,"application/json")

方法二:通过继承View类,重写get方法,获取指定获取某些字段商品的前十条数据,通过serialize序列化数据,返回数据响应。

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条数据
     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方法,获取商品的前是前十条数据,通过serialize序列化数据,返回数据响应,工作中我们常用第三种方法返回JSON数据。

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实现商品列表页
   :param request:
   :return:
   """
   #返回前所有商品的前10条数据
   goods_list = Goods.objects.all()[:10] 
   #序列化,把内存中的python对象,转换成网络中能够传输的对象
   #直接转换成json类型的字符串
   data = serializers.serialize("json",goods_list)
   #转换成字典
   data = json.loads(data)
   return JsonResponse(data,safe=False)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
Python字符串和字典相关操作的实例详解
Sep 23 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
pycharm重置设置,恢复默认设置的方法
Oct 22 Python
python模拟菜刀反弹shell绕过限制【推荐】
Jun 25 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
python基础之停用词过滤详解
Apr 21 Python
通过Python把学姐照片做成拼图游戏
Feb 15 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 #Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 #Python
django 将model转换为字典的方法示例
Oct 16 #Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 #Python
使用Python编写Prometheus监控的方法
Oct 15 #Python
python取数作为临时极大值(极小值)的方法
Oct 15 #Python
Python文件监听工具pyinotify与watchdog实例
Oct 15 #Python
You might like
星际争霸任务指南——人族
2020/03/04 星际争霸
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
php-msf源码详解
2017/12/25 PHP
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
js实现二级导航功能
2017/03/03 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
Node.js实现简单管理系统
2019/09/23 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
Python实现二维有序数组查找的方法
2016/04/27 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
python opencv摄像头的简单应用
2019/06/06 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python numpy 反转 reverse示例
2019/12/04 Python
python-numpy-指数分布实例详解
2019/12/07 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
优秀员工年终发言演讲稿
2014/01/01 职场文书
前台文员职责范本
2014/03/07 职场文书
教师个人教学总结
2015/02/11 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书