Python ';元组';试图为Django Rest API视图集设置权限时,对象不可调用

Python ';元组';试图为Django Rest API视图集设置权限时,对象不可调用,python,django,permissions,django-rest-framework,Python,Django,Permissions,Django Rest Framework,我正在尝试为我的用户模型API设置权限。我的目标是让任何人创建、列出和获取用户,但只让用户部分更新他或她自己。但是,当我尝试调用我的API时,我得到: TypeError: 'tuple' object is not callable 视图.py 权限。py 尝试获取pk=1的用户的完整日志 Internal Server Error: /users/get-user/1/ Traceback (most recent call last): File "C:\Users\maxso\En

我正在尝试为我的用户模型API设置权限。我的目标是让任何人创建、列出和获取用户,但只让用户部分更新他或她自己。但是,当我尝试调用我的API时,我得到:

TypeError: 'tuple' object is not callable
视图.py

权限。py

尝试获取pk=1的用户的完整日志

Internal Server Error: /users/get-user/1/
Traceback (most recent call last):
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\viewsets.py", line 116, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 495, in dispatch
    response = self.handle_exception(exc)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 455, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 483, in dispatch
    self.initial(request, *args, **kwargs)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 401, in initial
    self.check_permissions(request)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 333, in check_permissions
    for permission in self.get_permissions():
  File "C:\Users\maxso\Desktop\kand\zigma\backend\user\views.py", line 38, in get_permissions
    return super(self.__class__, self).get_permissions()
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 280, in get_permissions
    return [permission() for permission in self.permission_classes]
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 280, in <listcomp>
    return [permission() for permission in self.permission_classes]
TypeError: 'tuple' object is not callable
[18/Apr/2019 13:33:45] "GET /users/get-user/1/ HTTP/1.1" 500 18019
内部服务器错误:/users/get user/1/
回溯(最近一次呼叫最后一次):
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\django\core\handlers\exception.py”,第34行,在内部
响应=获取响应(请求)
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\django\core\handlers\base.py”,第126行,在\u get\u响应中
response=self.process\u异常\u由\u中间件(e,请求)
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\django\core\handlers\base.py”,第124行,在\u get\u响应中
响应=包装的回调(请求,*回调参数,**回调参数)
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\django\views\decorators\csrf.py”,包装视图第54行
返回视图函数(*args,**kwargs)
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\rest\u framework\viewsets.py”,第116行,在视图中
返回自调度(请求,*args,**kwargs)
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\rest\u framework\views.py”,第495行,在dispatch中
响应=自身处理异常(exc)
句柄异常中的文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\rest\u framework\views.py”,第455行
自举未捕获异常(exc)
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\rest\u framework\views.py”,第483行,在dispatch中
self.initial(请求,*args,**kwargs)
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\rest\u framework\views.py”,第401行,首字母
自我检查权限(请求)
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\rest\u framework\views.py”,第333行,在check\u权限中
在self.get_permissions()中获取权限:
文件“C:\Users\maxso\Desktop\kand\zigma\backend\user\views.py”,第38行,在get\U权限中
返回超级(self.\uuuuuuuuuuuuuuuuuuuuuuuuu类,self).获取权限()
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\rest\u framework\views.py”,第280行,在get\u权限中
返回[permission(),以获得self.permission\u类中的权限]
文件“C:\Users\maxso\Envs\zigma\u env\lib\site packages\rest\u framework\views.py”,第280行,在
返回[permission(),以获得self.permission\u类中的权限]
TypeError:“tuple”对象不可调用
[18/Apr/2019 13:33:45]“GET/users/GET user/1/HTTP/1.1”500 18019

我一点也不认识Django,但我想你的问题就在这一行:
self.permission\u classes=(SAFE\u METHODS,)
->你确定
SAFE\u METHODS
是有效的权限类吗?事实上,它指的是复数形式的方法,这让我觉得这是一种收藏。在这个特定的例子中,一个
元组
。是的,这是非常正确的。哇,真傻。非常感谢。我一点也不了解Django,但我认为您的问题在于这一行:
self.permission\u classes=(SAFE\u METHODS,)
->您确定
SAFE\u METHODS
是有效的权限类吗?事实上,它指的是复数形式的方法,这让我觉得这是一种收藏。在这个特定的例子中,一个
元组
。是的,这是非常正确的。哇,真傻。非常感谢。
class IsUpdateUser(permissions.BasePermission):

    def has_permission(self, request, view):
        # can write custom code
        print (view.kwargs)
        try:
            user = User.objects.get(
                pk=view.kwargs['pk'])
        except:
            return False

        if request.user == user:
            return True

        return False
Internal Server Error: /users/get-user/1/
Traceback (most recent call last):
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\viewsets.py", line 116, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 495, in dispatch
    response = self.handle_exception(exc)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 455, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 483, in dispatch
    self.initial(request, *args, **kwargs)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 401, in initial
    self.check_permissions(request)
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 333, in check_permissions
    for permission in self.get_permissions():
  File "C:\Users\maxso\Desktop\kand\zigma\backend\user\views.py", line 38, in get_permissions
    return super(self.__class__, self).get_permissions()
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 280, in get_permissions
    return [permission() for permission in self.permission_classes]
  File "C:\Users\maxso\Envs\zigma_env\lib\site-packages\rest_framework\views.py", line 280, in <listcomp>
    return [permission() for permission in self.permission_classes]
TypeError: 'tuple' object is not callable
[18/Apr/2019 13:33:45] "GET /users/get-user/1/ HTTP/1.1" 500 18019