zoukankan      html  css  js  c++  java
  • web之django的序列化器汇总

      django的rest_framework的一大特色是序列化器,其封装了视图中关于用户请求,验证及响应数据的处理部分,使得程序简洁化。此DRF框架中将数据模型对象转化为json、xml等可传输或存档的格式的过程称为序列化,反之称为反序列化。序列化器是专注于此类行为的类,有自定义序列化器,模型类序列化器,视图集合三类。

    1.视图函数

    2.类视图

    1.自定义序列化器
    自定义的序列化器serializer主要包括模型对象,验证器件,数据创建,数据更新等四部分。
     模型对象是序列化的字段对象。其字段及类型有:CharField,DatetimeField,BooleanField,IntegerField等,其参数有null,blank,max_length,max_value等。其通用参数有 read_only,write_only,required,default.对于关联对象的嵌套序列化,其字段可以是PrimaryKeyRelate(必须添加many参数),StringRelatedField,SlugRelatedField,to_presentation,或者直接采用关联对象的序列化器
     验证器是提交数据时经过验证后才能进行保存。模型对象中的字段参数属于初级验证,也可以定义validator集合,或者定义validate方法进行进一步的验证。is_valid()进行校验。
     序列化实例时参数有instance,data,many,partial。many表明序列化的对象instance是一个查询集合。partial表明需要序列化的对象其data参数可以是部分字段。 

    2.模型类序列化器

    3.模型类视图

              模型类视图按层级分为三类APIView,GenericAPIView和扩展类视图××Mixin.APIView视图的主要特点是封装request和response类,可以满足用户的各种请求json、xml格式。另外增加了鉴权,限流等。GenericAPIView视图类继承自APIView类。并增加了用户对单一对象的操作处理,封装了queryset和serilizer_class类,并提供了get_queryset、get_serializerclass,get_object,get_serializer方法供用户调用。为了满足用户的各种请求方式,django提供了扩展类,有ListModeMixin,CreateModeMixin,UpdateModeMixin,DestroyModeMixin,RetrieveModeMixin等类,方便用户对不同请求方式的处理,但调用时需要联合GenericAPIView一起使用。为进一步简化,针对多请求方式,用户还提供了ListAPIView,CreateAPIView,UpdateAPIView,DestroyAPIView,RetrieveAPIView,ListCreateAPIView,RetrieveUpdateAPIView,RetrieveDestroyAPIView,RetrieveUpdateDestroyAPIView等9个类,其已经封装完全,可直接使用。也可复合使用,但可能需要重写类中的方法。

    4.模型类视图集:

       drf框架自带的视图集有ViewSet,GenericAPIViewSet,ModelsViewSet,ReadOnlyViewSet.视图集的核心是基于action而非直接的请求方式(post,get)等将请求和视图方法进行绑定,其基于ViewSetMixin类来实现。其他的视图集都是基于此类与××View的扩展。ViewSet视图集不带任何action,只是封装了response,request来满足用户的各种请求格式。另增加了鉴权,限流,认证等功能。GenericAPIViewSet视图集自带了queryset和serializer_class及相关的方法。ModelsViewSet封装了增删改查列表5种常用的请求动作。ReadOnlyViewSet封装了list和retrieve两种请求动作,方便用户查阅。
     

    5.路由

  • 相关阅读:
    Golang初学者的资源整理
    Mesos和kubernetes
    Go by Example
    dbus 和 policykit 实例篇(python) ()转
    CentOS7卸载KDE桌面(转)
    Please read “Security” section of the manual to find out how to run mysqld as root!错误解决(转)
    yum使用总结(转)
    Linux rpm 命令参数使用详解[介绍和应用](转)
    nginx+lua+redis高并发应用建设
    python网络爬虫进入(一)——简单的博客爬行动物
  • 原文地址:https://www.cnblogs.com/xuehaiwuya0000/p/11251864.html
Copyright © 2011-2022 走看看