Джангоmissions_classes для доступа к маршруту не вызывается - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь изменить разрешения для определенных маршрутов.Некоторые маршруты, которые я хочу открыть, другие маршруты, которые я хочу, чтобы пользователь проходил аутентификацию.Мой код следующий:

from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.viewsets import GenericViewSet

class UserViewSet(GenericViewSet):
      queryset = User.objects.all()
      serializer_class = UserSerializer
      permission_classes = [IsAuthenticated]
      renderer_classes = [JSONRenderer]


    @action(url_path="an/api/path", detail=False, methods=["post"], renderer_classes=[JSONRenderer])
    @api_view(['GET'])
    @permission_classes((IsAuthenticated, ))
    def get_stuff(self, request):
        #Will get stuff

Но я продолжаю получать эту ошибку:

 File "/code/api/views/UserViewSet.py", line 16, in <module>
api_1     |     class UserViewSet(GenericViewSet):
api_1     |   File "/code/api/views/UserViewSet.py", line 33, in UserViewSet
api_1     |     @permission_classes((IsAuthenticated, ))
api_1     | TypeError: 'list' object is not callable

В моем файле settings.py у меня есть:

REST_FRAMEWORK = {
    "DEFAULT_PERMISSION_CLASSES": [
        "rest_framework.permissions.IsAuthenticated",
    ],
    "DEFAULT_AUTHENTICATION_CLASSES": [
        "rest_framework_jwt.authentication.JSONWebTokenAuthentication",
        "rest_framework.authentication.SessionAuthentication",
        "rest_framework.authentication.BasicAuthentication",
    ],
    "DEFAULT_RENDERER_CLASSES": (
        "rest_framework.renderers.JSONRenderer",
    )

Любойидея, почему он продолжает выбрасывать список 'объект не является вызываемой функцией?

1 Ответ

0 голосов
/ 30 января 2019

Удалить permission_classes = [IsAuthenticated].Переопределяет декоратор.

class UserViewSet(GenericViewSet):
      queryset = User.objects.all()
      serializer_class = UserSerializer
      renderer_classes = [JSONRenderer]


    @action(url_path="an/api/path", detail=False, methods=["post"], renderer_classes=[JSONRenderer])
    @api_view(['GET'])
    @permission_classes((IsAuthenticated, ))
    def get_stuff(self, request):
        #Will get stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...