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

作者:让我在雪地上撒点野 时间:2022-12-06 00:40:08 

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

方法一:通过继承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)

来源:https://blog.csdn.net/weixin_42301462/article/details/81393142

标签:django,serializer,model
0
投稿

猜你喜欢

  • Python的re模块正则表达式操作

    2023-08-21 11:47:08
  • Python中collections.Counter()的具体使用

    2023-04-22 23:26:35
  • JS实现选择TextArea内文本的方法

    2024-04-16 10:40:02
  • Python函数中的全局变量详解

    2022-08-05 13:58:34
  • 利用ADODB.Stream使用浏览器下载服务器文件

    2008-10-09 12:42:00
  • 模拟下拉菜单[兼容IE系列以及火狐]

    2009-12-13 10:23:00
  • Python3日期与时间戳转换的几种方法详解

    2021-03-10 03:57:17
  • asp之自动闭合HTML/ubb标签函数+简单注释

    2008-09-29 12:21:00
  • Python中Numpy的深拷贝和浅拷贝

    2021-10-04 21:08:43
  • JavaScript中的onerror事件概述及使用

    2024-05-03 15:06:39
  • 如何配置关联Python 解释器 Anaconda的教程(图解)

    2021-06-13 15:27:30
  • Go语言pointer及switch fallthrough实战详解

    2024-05-09 14:55:07
  • 4个的Python自动化脚本分享

    2021-05-28 19:22:29
  • 在MySQL中用正则表达式替换数据库中的内容的方法

    2024-01-17 02:51:57
  • go流程控制代码详解

    2023-10-15 18:14:19
  • Bootstrap轮播插件简单使用方法介绍

    2024-04-27 15:19:06
  • SQL数据类型详解

    2024-01-13 02:01:30
  • 微信小程序实现图片上传功能

    2023-09-06 13:08:44
  • HTML语言将加入硬件操作功能

    2009-12-16 19:19:00
  • python中numpy的矩阵、多维数组的用法

    2021-01-26 04:25:43
  • asp之家 网络编程 m.aspxhome.com