详解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 相关文章推荐
kNN算法python实现和简单数字识别的方法
Nov 18 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
python实现飞机大战微信小游戏
Mar 21 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
python实现随机漫步方法和原理
Jun 10 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
numba提升python运行速度的实例方法
Jan 25 Python
Python上下文管理器Content Manager
Jun 26 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
用PHP和ACCESS写聊天室(一)
2006/10/09 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
php自定义分页类完整实例
2015/12/25 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
实例详解Python装饰器与闭包
2019/07/29 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
军训自我鉴定
2014/01/22 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
离婚协议书怎么写
2015/01/26 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书