2020.7.24 DRF实战总结

发布于 2020-07-24  79 次阅读


Table of Contents

  • 可以根据内部类Meta 自动生成字段(Filed)
  • 已经自动实现了create 和 update方法
  • extra_kwargs 字段中添加额外属性
  • 数据验证需要自己写规则
  • 作用:
    • 根据model自动生成属性
    • 方便修改添加属性字段
    • 继承自Serializer 实现了create ,update方法
  • 使用:

    • 1.继承ModelSerializer模型类
    • 2.定义类Meta 定义属性
      • model = 模型类
      • fields = (需要生成的字段,)
      • 自动生成的字段,不满足需要,就直接在类中指定字段选项参数
      • fields = “all” 所有字段
      • extra_kwargs={“bcomment”:{max_value:100}} 也是指定字段选项参数
      • exclude = (‘取反的字段’)
      • read_only_fields=(字段,) 给字段添加read_only
    • 3.已经定义了create(),和update()方法
    • 4.数据验证只有unique实现
      • 自动实现unique验证方法
      • 别的数据验证方式还是使用 validate_field_name()方法
  • 技巧:

    • 可以指定没有的字段 (验证码),要么fields是all,要么要给field指定
  • 出现错误:

    • 应该继承ModelSerializer,(不要继承ModelField)
  • DRF 中GenericApiView和APIView的区别

    • APIView

      • 继承自django的view
        • 权限认证功能,限流功能
        • 查询数据
          • request.data 相当于body 自动转换成了json
          • request.query_param() 接收字符串参数
        • Response()返回对象
          • 不用safe
    • GenericAPIVIew

      • 继承自ApiView,实现了分页,过滤排序
      • 使用时候需要指定查询集queryset和序列化器serializer_class
      • get_queryset()和get_serializer() 经常被重写
      • 查询数据
        • request.data 相当于body 自动转换成了json
        • request.query_param() 接收字符串参数
  • 序列化器的作用

    • 1.可以验证数据
    • 2.自动生成序列化json和反序列化json
    • 3.自动创建更新数据库表内容
  • DRF常用扩展子类

  • DRF Mixins

    • mixin 类用于提供基本视图行为的操作。请注意,mixin 类提供了操作方法,而不是直接定义处理方法,如 .get().post()。这允许更灵活的行为组合。
    • ListModelMixin
    • CreateModelMixin
  • DRF 视图集的作用

  • 2.扩展延伸知识

    3.灵感代办

    4.复习内容

    5.学习成果&问题