五、权限组件
权限组件=[权限类,权限类,权限类…]
执行所有权限类的has_permission方法,通过返回True,不通过返回False
默认情况下,所有的权限类都通过,才返回True
5.1简单应用权限组件
#ext.per
class MyPermission1(BasePermission):
def has_permission(self, request, view):
"""
Return `True` if permission is granted, `False` otherwise.
"""
token1=request.query_params.get('token1',None)
if token1=='111':
#如果token1==111,则代表有权限,返回True
return True
#否则返回False
return False
#views视图类
class OrderView(APIView):
# 调用权限组件
permission_classes = [ext.per.MyPermission1,]
def get(self, request):
return Response('order')
效果1:token1正确,有权限访问
效果2:token2错误,无权限访问
5.2自定义错误信息
class MyPermission1(BasePermission):
#自定义错误信息
message={
'code':2001,'errMsg':'无权限访问该视图'}
def has_permission(self, request, view):
token1=request.query_params.get('token1',None)
if token1=='111':
return True
return False
效果:
5.3多个权限类
只有所有权限类都返回True,才能获取访问权限。任何一个类返回False,则不会执行该类后面的权限类。
from rest_framework.permissions import BasePermission
class MyPermission1(BasePermission):
#权限类1
message={
'code':2001,'errMsg':'token1验证失败,无权访问'}
def has_permission(self, request, view):
"""
Return `True` if permission is granted, `False` otherwise.
"""
token1=request.query_params.get('token1',None)
if token1=='111':
return True
return False
class MyPermission2(BasePermission):
#权限类2
message={
'code':2001,'errMsg':'token2验证失败,无权访问'}
def has_permission(self, request, view):
"""