Django----Modelviewset继承

1.modelviewset 认证、权限、限流、序列化、分页、过滤、排序

modelviewset的应用场景是:
1.主要应用于数据接口
2.对数据库的增删改查
3.在视图函数中没有很多业务逻辑需要来处理的

modelviewser从一定程度上来说是继承了APIView

APIview的应用场景是:

2.支付宝登录,三方登录,七牛云上传

DRF八大核心:
1.权限(用户登录校验用户名密码或者token是否合法)
2.认证   (根据不同的用户角色,可以操作不同的表)
3.版本   (接口版本号,用 v1/v2/v3)
api.example.com/v1/login # 只有用户名密码登录 
api.example.com/v2/login # 手机号,微信 登录
4.分页   
5.序列化   (返回json)
6.限流  (限制接口访问速度)
7.过滤   (username=zhangsan)
8.排序 (ordering=-id```

继承modelviewset
#class UserViewSet(viewsets.ModelViewSet):
   # """ 完成产品的增删改查 """
   # queryset = User.objects.all()
   # serializer_class = UserSerializer
    # 优先使用 get_serializer_class 返回的序列化 器 
    # 1.认证:自定义认证类, 自定义会覆盖全局配置
    # authentication_classes = (BasicAuthentication, SessionAuthentication) 
    # 2.权限:自定义权限类
    # permission_classes = (MyPermission,)
    # 3.分页:自定义分页器 覆盖全局配置
    pagination_class = PageNum
    # 4.限流:自定义限流类
    throttle_classes = [UserRateThrottle]
    # 5.过滤:指定过滤方法类, 排序方法类, 一个或多个
    filter_backends = (DjangoFilterBackend, OrderingFilter) # 同时支持过滤和排序
    # 5.1指定排序字段, 不设置, 排序功能不起效
    ordering_fields = ('date_joined', 'id') # ?ordering=-id
    # 5.2指定过滤字段, 不设置, 过滤功能不起效
    filter_fields = ('username', 'phone', 'is_active') # ? username=tom&phone=&is_active=true

    # 根据不同的请求, 获得不同的序列化器
    def get_serializer_class(self):
        if self.action == 'unactived':
            return UserUnActiveSerializer
        else:
            return UserSerializer
`
posted @ 2020-10-27 21:34  小王小王ii  阅读(175)  评论(0编辑  收藏  举报