• 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
    `
  • 相关阅读:
    javascript事件流讲解和实例应用
    Javascripts事件基础和事件绑定
    javascript-节点属性详解
    js数据类型检测的四种方式
    原生JS的window.onload与Jquery的$(document).ready(function() {}),$(function () {})有什么不同?
    Js字符串方法大全
    什么是原型链?
    new操作符具体干了什么呢
    document.write和innerHTML的区别
    一个页面从输入URL到页面加载显示完成,这个过程中都发生了什么?
  • 原文地址:https://www.cnblogs.com/wangxiaosai/p/13887746.html
Copyright © 2020-2023  润新知