drf之day11: 排序源码分析,基于jwt的认证类,RBAC的介绍,ACL、RBAC、ABAC(PBAC,CBAC)权限控制的介绍,casbin的入门使用,后台管理simplui的介绍和使用

本文详细分析了Django Rest Framework中的排序和过滤源码,并介绍了基于JWT的认证类。深入探讨了RBAC的概念、适用范围以及在django后台管理中的应用。同时,对比了ACL、RBAC、ABAC等不同权限控制系统,展示了casbin的入门使用,并提及了后台管理工具simplui的介绍和配置。
摘要由CSDN通过智能技术生成

一:排序和过滤源码分析

1.继承了GenericAPIView+ListModelMixin,只要在视图类中配置filter_backends它就能实现过滤和排序

# drf内置的过滤类(SearchFilter),排序类(OrderingFilter)

2.django-filter的使用

自定义:写一个类,继承BaseFilterBackend, 重写filter_queryset,返回qs对象,就是过滤或排序后的结果

3.只有获取多条数据,才涉及到排序

def list(self, request, *args, **kwargs):
        # self.get_queryset()所有数据,经过了self.filter_queryset返回了qs
        # self.filter_queryset完成的过滤
        queryset = self.filter_queryset(self.get_queryset())
        # 如果有分页,走的分页----》视图类中配置了分页类
        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)
	   # 如果没有分页,走正常的序列化,返回
        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)
    
self.filter_queryset完成了过滤,当前在视图类中,self是视图类的对象,去视图类中找没找到,去父类---》GenericAPIView---》filter_queryset
    
        def filter_queryset(self, queryset):
            for backend in list(self.filter_backends):
                queryset = backend().filter_queryset(self.request, queryset, self)
            return queryset

4.总结:

# 1.写的过滤类要重写filter_queryset,返回qs(过滤或排序后)对象
# 2.后期如果不写过滤类,只要在视图类中重写filter_queryset,在里面实现过滤也可以

二:基于jwt的认证类

class JWTAuthentication(BaseAuthentication):
    def authenticate(self, request):
        # 放到头中:token-->HTTP_TOKEN   Authorization--->HTTP_AUTHORIZATION
        print(request.META)
        jwt_value = request.META.get('HTTP_TOKEN')
        # 验证token是否合法,jwt模块下一定有个验证token的函数
        try:
            payload = jwt_decode_handler(jwt_value)
        except jwt.ExpiredSignature:
            raise AuthenticationFailed('token过期了')
        except jwt.DecodeError:
            raise AuthenticationFailed('token解码失败')
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值