详解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中的列表生成式与生成器学习教程
Mar 13 Python
如何用itertools解决无序排列组合的问题
May 18 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
python 实现A*算法的示例代码
Aug 13 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
Python decorator拦截器代码实例解析
Apr 04 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 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
MySQL修改密码方法总结
2008/03/25 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
区分JS中的undefined,null,"",0和false
2007/03/08 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
python中argparse模块用法实例详解
2015/06/03 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
Django视图扩展类知识点详解
2019/10/25 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
印度在线购物网站:Paytmmall
2019/07/24 全球购物
给实习单位的感谢信
2014/02/01 职场文书
办公室文员自荐书
2014/02/03 职场文书
六一节目主持词
2014/04/01 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
学生吸烟检讨书
2014/09/14 职场文书
三严三实对照检查材料
2014/09/22 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python