django-rest 权限

权限:为不同的用户赋予访问不用的视图

一、.django中restframwork的权限基本使用:定义一个权限类,在其中实现has_permission方法, 然后在视图函数中配置就行

# 权限类
class Mypermission(object):
    def has_permission(self,request, view):
        pass
# 使用:permission_classes =[权限1,权限2,]
class UserInfoView(APIView):
    """订单(普通用户和Vip)"""
    permission_classes =[Mypermission]
    def get(self, request, *args, **kwargs):
        pass

二.源码流程

三.内置权限
源码:

class BasePermission(metaclass=BasePermissionMetaclass):
    """
    A base class from which all permission classes should inherit.
    """

    def has_permission(self, request, view):
        """
        Return `True` if permission is granted, `False` otherwise.
        """
        return True

    def has_object_permission(self, request, view, obj):
        """
        Return `True` if permission is granted, `False` otherwise.
        """
        return True

所以从上面源码可以看出,自己写认证类的时候要继承BasePermission 并在其中实现has_permission方法来实现。

实现方法:

from rest_framework.permissions import BasePermission
# 1. 继承django内置的权限来实现自己的权限
class Mypermission(BasePermission):
	# 2.实现权限方法
    def has_permission(self, request, view):
        pass

class UserInfoView(APIView):
    """订单(普通用户和Vip)"""
    # 3.在需要的视图中配置权限
    permission_classes =[Mypermission]
    def get(self, request, *args, **kwargs):
        pass

其他:当然也可以跟认证一样在全局实现配置。

四、总结:

1.使用的时候,首先要继承BasePermission来自定义自己的权限类,然后实现has_permission方法,返回只有二个,TrueFalse

2.全局配置,在settings中配置一个路径,如果在局部视图中使用,在视图函数中加入一个permission_class = [权限,]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值