Django - 'UserViewPermissionClass' 对象没有具有自定义权限的属性 'authenticate'
Django - 'UserViewPermissionClass' object has no attribute 'authenticate' with custom permissions
我正在尝试在基于 class 的视图中使用自定义权限。
当我尝试 运行 我的一个观点时,我得到一个 WrappedAttributeError :'UserViewPermissionClass' object has no attribute 'authenticate'
这是我的自定义权限:
class UserViewPermissionClass(BasePermission):
def has_permission(self, request, view):
if request.method == 'GET':
return request.user.is_admin
elif request.method == 'POST':
return True
# default logic
class UserView(APIView):
authentication_classes = ( UserViewPermissionClass,)
这是我正在尝试的基于 class 的视图 运行 :
class HandleUsers(UserView):
def get(self, request):
"""Only for admin"""
try:
users = User.objects.all()
except User.DoesNotExist():
return HttpResponse(status=404)
serializer = UserSerializer(users, many=True)
return Response(serializer.data)
def post(self, request):
"""For everyone"""
serializer = RegistrationSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.error)
这是我对休息框架的设置:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
],
}
经过一些研究,我发现我的错误可能是由于我的 DEFAULT_PERMISSION_CLASSES。但是我看不到什么可能会阻塞。
预先感谢您的帮助。
将authentication_classes=(UserViewPermissionClass,)
更改为permission_classes=(UserViewPermissionClass,)
我正在尝试在基于 class 的视图中使用自定义权限。
当我尝试 运行 我的一个观点时,我得到一个 WrappedAttributeError :'UserViewPermissionClass' object has no attribute 'authenticate'
这是我的自定义权限:
class UserViewPermissionClass(BasePermission):
def has_permission(self, request, view):
if request.method == 'GET':
return request.user.is_admin
elif request.method == 'POST':
return True
# default logic
class UserView(APIView):
authentication_classes = ( UserViewPermissionClass,)
这是我正在尝试的基于 class 的视图 运行 :
class HandleUsers(UserView):
def get(self, request):
"""Only for admin"""
try:
users = User.objects.all()
except User.DoesNotExist():
return HttpResponse(status=404)
serializer = UserSerializer(users, many=True)
return Response(serializer.data)
def post(self, request):
"""For everyone"""
serializer = RegistrationSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.error)
这是我对休息框架的设置:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
],
}
经过一些研究,我发现我的错误可能是由于我的 DEFAULT_PERMISSION_CLASSES。但是我看不到什么可能会阻塞。
预先感谢您的帮助。
将authentication_classes=(UserViewPermissionClass,)
更改为permission_classes=(UserViewPermissionClass,)