dir_day11

这篇博客主要介绍了Django后端开发中的排序和过滤源码分析,包括内置过滤和排序机制,以及django-filter的使用。此外,详细探讨了基于JWT的认证类和RBAC权限控制,强调了RBAC在公司内部管理系统中的应用,并对比了ACL、RBAC、ABAC等不同权限控制策略。
摘要由CSDN通过智能技术生成

1 排序和过滤源码分析

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

  • drf内置的过滤类(SearchFilter),排序类(OrderingFiler)
  • django-filter

过滤

内置过滤:特点模糊查找

from rest_framework.filters import SearchFilter


class BookViewSet(ViewSetMixin, ListAPIView):
    queryset = models.Book.objects
    serializer_class = BookModelSerializer
    authentication_classes = [LoginAuth, ]
    # throttle_classes = [IPThrottling, ]
    filter_backends = [SearchFilter]
    search_fields = ['name', 'price', ]
  • 第三方过滤:不支持模糊查询,是精准匹配
  • 1.安装三方插件
  • 2 使用模块 from django_filters.rest_framework import DjangoFilterBackend
    -3 在配置文件中配置(settings.py)
INSTALLED_APPS = [
    ...
    'django_filters',  # 需要注册应用,
]
  • 4 在视图中使用
class BookViewSet(ViewSetMixin, ListAPIView):
    queryset = models.Book.objects
    serializer_class = BookModelSerializer
    authentication_classes = [LoginAuth, ]
    filter_backends = [DjangoFilterBackend, ]
    filter_fields = ['name', 'price']

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

from rest_framework.filters import BaseFilterBackend
from django.db.models import Q


class Myfilter(BaseFilterBackend):
    def filter_queryset(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值