rest-framework之权限组件
一、权限介绍
只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制
二、权限的使用
Ⅰ、写一个权限类
from rest_framework.permissions import BasePermission
class MyPermissions(BasePermission):
def has_permission(self,request,view):
#代表是超级用户
if request.user.type ==1:
#如何去除type对应的文字 get_字段名_display()
user_str=request.user.get_type_display()
print(user_str)
#超级用户,校验通过,返回true,校验失败,返回false
return True
else:
return False
Ⅱ、局部使用
在视图类中:
permission_classes=[MyPermissions]
Ⅲ、全局使用
在setting中配置:
'DEFAULT_PERMISSION_CLASSES':['app01.MyAuth.MyPermissions',],
三、源码学习
源码分析
APIView中的:check_permissions(self, request),进行的权限校验
配置错误信息的显示:message='错误提示'
def check_permissions(self, request):
for permission in self.get_permissions():
if not permission.has_permission(request, self):
self.permission_denied(
request, message=getattr(permission, 'message', None)
)
self.get_permissions()
def get_permissions(self):
return [permission() for permission in self.permission_classes]
四、使用顺序
权限类使用顺序:先用视图类中的权限类,再用settings里配置的权限类,最后用默认的权限类