Permission() for permission in self.permission_classes -> TypeError: объект 'str' не является вызываемым

Кто-нибудь знает, почему я получаю эту ошибку? Я установил разрешение по умолчанию IsAuthenticated. Только register имеет AllowAny, чтобы разрешить пользователям регистрироваться.

Not Found: /
[21/Feb/2022 21:43:06] "GET / HTTP/1.1" 404 2278
Not Found: /account
[21/Feb/2022 21:43:11] "GET /account HTTP/1.1" 404 2317
Internal Server Error: /account/register
Traceback (most recent call last):
\venv\lib\site-packages\rest_framework\views.py", line 278, in <listcomp>
    return [permission() for permission in self.permission_classes]
TypeError: 'str' object is not callable
[21/Feb/2022 21:43:14] "GET /account/register HTTP/1.1" 500 106055

Мой views.py класс:

@api_view(['POST'])
@permission_classes(['AllowAny'])
def registration_view(request):
    serializer = RegistrationSerializer(data=request.data)
    data = {}
    if serializer.is_valid():
        account = serializer.save()
        data['response'] = "successfully registered a new user."
        data['email'] = account.email
        data['username'] = account.username
    else:
        data = serializer.errors
    return Response(data)

Я использую SessionAuthentication и IsAuthenticated в качестве аутентификации и разрешения по умолчанию в моем файле settings.py.

CustomUser модель просто наследуется от AbstractUser. Никакого дополнения.

Вы можете передавать классы разрешений не как строки, а как ссылки на классы, так:

from rest_framework.permissions import AllowAny

@api_view(['POST'])
@permission_classes([AllowAny])
def registration_view(request):
    # …

но вам не нужно указывать AllowAny, так как, ну, он разрешает любой запрос. Вы можете реализовать представление с помощью:

@api_view(['POST'])
def registration_view(request):
    # …
Вернуться на верх