django-restframework 序列化详解

django-restframework 组件是django下面的一个,但是需要自己下载并使用

1、

  在自己的app下创建一个python文件叫做serializer的文件(其实也可以不用创建,在views里面写也可以,但是为了好辨识,还是创建了吧)

2、

  创建一个类 这个类的名称就是你自己想要序列化哪个表的名称,方式与model的创建类似

  from rest_framework impoer serializers

  class BookSerializers(serializers.Serializer):

    title = serializers.CharField()

    price= serializers.CharField()

    # 一对多字段 使用source字段来控制一对多中需要显示的内容

    publish =  serializers.CharField(source = ‘publish.name‘)

    # 多对多字段 serializers.SerializerMethodField() 会显示 get_***的返回值  ***为我们需要查找的多对多内容名

    authors = serializers.SerializerMethodField()

    def get_authors(self,obj):

      temp = []

      for author in obj.authors.all()

        temp.append(author.name)

      return temp

  如果想要省事,那么serializers还有一个方法  继承的是serializers.ModelSerializer类

  class BookModelSerializers(serializers.ModelSerializer):

    class Meta:

      model = Book # 你自己model的名称

      fields = "__all__"

      # 因为这种方法 会将一对多和多对多的默认值都为关联表内容的主键值,如果我们想要修改,那么就还按照上面的方法,添加进来,进行修改即可

           # 一对多字段 使用source字段来控制一对多中需要显示的内容

      publish =  serializers.CharField(source = ‘publish.name‘)

      # 多对多字段 serializers.SerializerMethodField() 会显示 get_***的返回值  ***为我们需要查找的多对多内容名

      authors = serializers.SerializerMethodField()

      def get_authors(self,obj):

        temp = []

        for author in obj.authors.all()

          temp.append(author.name)

        return temp

3、

  在views 中编写逻辑代码,继承的是APIView类

  class BookViewSet(APIView):

    def get(self,request):

      pass

    def post(self,reuqest):

      bs = BookSerializers(data=request.data,many=False)

      if bs.is_valid():  # 判断获取到的数据是否符合序列化格式

        bs.save()  # 将内容进行保存

        return Response(bs.data)

      else:

        return Response(bs.errors)

  在views里面 自己编写的代码中导入 serializer文件中的类

  from serializer import BookSerializers

  然后将内容进行序列化

  bs = BookSerializers(list1,many=True)  #many=True 是对多个字典进行序列化操作

  使用 restframework中的Response来进行renturn操作

  from rest_framework.response import Response

  return Response(bs.data)

  使用这样的返回值,如果使用浏览器进行浏览,则会显示restframework框架自己编写的一套页面进行内容返回,而我们在开发的时候,通常是前后端分离,前端人员希望请求的是Json数据,我们在模拟使用postman来请求时,则会返回JSON数据的字符串,方便调用。

原文地址:https://www.cnblogs.com/ifiwant/p/12573199.html

时间: 2024-10-17 05:30:23

django-restframework 序列化详解的相关文章

Django使用dwebsocket详解(跟着我不翻车)

Django使用websocket详解(最全dwebsocket版) 安装库 pip install dwebsocket 1.test.html 2.settings.py 3.url.py 4.common中的message_websocket.py by xff 原文地址:https://www.cnblogs.com/xufengfan/p/12181130.html

django配置settings详解

项目根目录: 1 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 项目安全码: 1 SECRET_KEY = ')b)3406p#v$u4ft([email protected]*=0*w1l*=0v0ixdrey)mmcd2uf#(x' DEBUG调试: 1 DEBUG = True 不要在实际生产中打开debug 允许访问的主机: 1 ALLOWED_HOSTS = ['*'] *是代表允许所有主机

序列化详解

Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.   2.什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候:b)当你想用套接字在网络上传送对象的时候:c)当你想通过RMI传输对象的时候: 3.如何实现序列化 将需要序列化的类实现Serializable接口就可以了,Seriali

Django框架模板详解

Django模板详解 模板使用 模板基本由两个部分组成,一是HTML代码,二是逻辑控制代码. 逻辑控制的实现又基本由三个部分组成: 1. 变量的使用 {{ person_name }} #使用双大括号来引用变量 2. tag的使用 {% if ordered_warranty %} #使用大括号和百分号的组成来表示使用Django提供的 template tag {% for item in item_list %} <li>{{ item }}</li> {% endfor %}

Django Rest Framework(2)-----序列化详解(serializers)

REST framework中的序列化类与Django的Form和ModelForm类非常相似.我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSerializer类,它为创建处理模型实例和查询集的序列化提供了有效的快捷方式. Serializers 序列化器允许把像查询集和模型实例这样的复杂数据转换为可以轻松渲染成JSON,XML或其他内容类型的原生Python类型.序列化器还提供反序列化,在验证传入的数据之后允许解析数据转换回复杂类型.不仅

django restframework序列化

序列化 序列化用于对用户请求数据进行验证和数据进行序列化,序列化器(serializers)类似于Django forms 模型设计 from django.db import models # Create your models here. class User(models.Model): """ 用户信息 """ name = models.CharField(max_length=32) pwd = models.CharField(m

restframework 组件详解

一.restful介绍restful是一种接口规范,前后端根据这种规范开发相应的接口,提高团队开发效率,尤其用于前后端分离,根据规范前后端开发模块互不影响二.路由 from rest_framework.routers import SimpleRouter,DefaultRouter 在routers模块下 封装了很多关于路由的方法 , 最基础的BaseRouter类,提供自定制的接口下面这个方法给提供了自动生成两条带参数的urlrouter = DefaultRouter() # 注册路由

JavaScript之对象序列化详解

一.什么是对象序列化? 对象序列化是指将对象的状态转换为字符串(来自我这菜鸟的理解,好像有些书上也是这么说的,浅显易懂!): 序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程(来自“百度百科—序列化“,学术性强,略显高端): 二.为什么会有对象序列化? 世间万物,都有其存在的原因.为什么会有对象序列化呢?因为程序猿们需要它.既然是对象序列化,那我们就先从一个对象说起: var obj = {x:1, y:2}; 当这句代码运行时,对象obj的内容会存储在一块

redis存储对象与对象序列化详解

redis主要存储类型最常用的五种数据类型: String Hash List Set Sorted set redis存储对象序列化和反序列化 首先来了解一下为什么要实现序列化 为什么要实现序列化接口 当一个类实现了Serializable接口(该接口仅为标记接口,不包含任何方法定义),表示该类可以序列化.序列化的目的是将一个实现了Serializable接口的对象转换成一个字节序列,可以. 把该字节序列保存起来(例如:保存在一个文件里),以后可以随时将该字节序列恢复为原来的对象.甚至可以将该