2020.7.24 DRF实战总结

发布于 20 天前  12 次阅读


1.学习内容

  • django 关联过滤查询

    • 关联过滤
      • 一查多,一般relate_name或者类名_set调用(查询时候不需要set)
      • 多查一,直接调用字段名
    • 类名小写和related_name不能同时使用)
      • 关联过滤查询 需要双下划线 __
  • DRF 序列化器 ModelSerializer模型类的作用

    • 总结
      • 可以根据内部类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.学习成果&问题


Ares个人进阶之路