zoukankan      html  css  js  c++  java
  • 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
    `
  • 相关阅读:
    MVC3、如何应用EntityFramework 连接MySql 数据库 Kevin
    DEV EXPRESS Summary Footer 不显示 Kevin
    装饰模式 Kevin
    Dev 控件 GridControl 控件 二次绑定数据源的问题。 Kevin
    System.InvalidOperationException 异常 Kevin
    LINQ to XML Kevin
    代理模式——代码版“吊丝的故事” Kevin
    VS2012 中的设备 面板 Kevin
    maven 学习笔记(三)创建一个较复杂的 eclipse+android+maven 工程
    maven 学习笔记(一)eclipse+android+maven
  • 原文地址:https://www.cnblogs.com/wangxiaosai/p/13887746.html
Copyright © 2011-2022 走看看