DRF JWT тип сообщения об ошибке «объект не повторяется и« вернуть [auth () для auth в self.authentication_classes] » - PullRequest
0 голосов
/ 30 марта 2020

Я делаю DRF api и получаю сообщение TypeError, когда пытаюсь сделать запрос.

Это сообщение не позволяет мне даже отладить.

Я ищу способ и проверил settings.REST_FRAMEWORK.

Это адрес моего кода проекта: https://github.com/jeonyh0924/WPS_DabangAPI/tree/d13d6b440d2a5a1dfd3e17318bee14d02544f6a5

Я изучаю через соответствующие адреса:

https://medium.com/analytics-vidhya/django-rest-api-with-json-web-token-jwt-authentication-69536c01ee18 settings.py

JWT_AUTH = {
    'JWT_ENCODE_HANDLER':
        'rest_framework_jwt.utils.jwt_encode_handler',
    'JWT_DECODE_HANDLER':
        'rest_framework_jwt.utils.jwt_decode_handler',
    'JWT_PAYLOAD_HANDLER':
        'rest_framework_jwt.utils.jwt_payload_handler',
    'JWT_PAYLOAD_GET_USER_ID_HANDLER':
        'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',
    'JWT_RESPONSE_PAYLOAD_HANDLER':
        'rest_framework_jwt.utils.jwt_response_payload_handler',

    'JWT_SECRET_KEY': 'SECRET_KEY',
    'JWT_GET_USER_SECRET_KEY': None,
    'JWT_PUBLIC_KEY': None,
    'JWT_PRIVATE_KEY': None,
    'JWT_ALGORITHM': 'HS256',
    'JWT_VERIFY': True,
    'JWT_VERIFY_EXPIRATION': True,
    'JWT_LEEWAY': 0,
    'JWT_EXPIRATION_DELTA': timedelta(days=30),
    'JWT_AUDIENCE': None,
    'JWT_ISSUER': None,
    'JWT_ALLOW_REFRESH': False,
    'JWT_REFRESH_EXPIRATION_DELTA': timedelta(days=30),
    'JWT_AUTH_HEADER_PREFIX': 'Bearer',
    'JWT_AUTH_COOKIE': None,
}
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
        'rest_framework.permissions.IsAdminUser',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    )
}

urls.py

    path('profile/', UserProfileView.as_view()),

views.py


class UserProfileView(RetrieveAPIView):
    permission_classes = (IsAuthenticated, )
    authentication_classes = JSONWebTokenAuthentication

    def get(self, request):
        try:
            user = User.objects.get(username=request.user.username)
            status_code = status.HTTP_200_OK
            response = {
                'success': 'true',
                'status code': status_code,
                'message': 'User profile fetched successfully',
                'data': [{
                    'username': user.username,
                    'email': user.email,
                    'introduce': user.introduce,
                }]
            }

        except Exception as e:
            status_code = status.HTTP_400_BAD_REQUEST
            response = {
                'success': 'false',
                'status code': status.HTTP_400_BAD_REQUEST,
                'message': 'User does not exists',
                'error': str(e)
            }
        return Response(response, status=status_code)

отслеживание ошибок

TypeError at /members/profile/
'type' object is not iterable
Request Method: GET
Request URL:    http://localhost:8000/members/profile/
Django Version: 2.2.11
Exception Type: TypeError
Exception Value:    
'type' object is not iterable
Exception Location: /usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages/rest_framework/views.py in get_authenticators, line 272
Python Executable:  /usr/local/var/pyenv/versions/fc-dabang/bin/python
Python Version: 3.7.4
Python Path:    
['/Users/mac/projects/dabang/WPS_DabangAPI/app',
 '/usr/local/var/pyenv/versions/3.7.4/lib/python37.zip',
 '/usr/local/var/pyenv/versions/3.7.4/lib/python3.7',
 '/usr/local/var/pyenv/versions/3.7.4/lib/python3.7/lib-dynload',
 '/usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages']
Server time:    월요일, 30 3월 2020 13:47:22 +0900
Traceback Switch to copy-and-paste view
/usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages/django/core/handlers/exception.py in inner
            response = get_response(request) …
▶ Local vars
/usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages/django/core/handlers/base.py in _get_response
                response = self.process_exception_by_middleware(e, request) …
▶ Local vars
/usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages/django/core/handlers/base.py in _get_response
                response = wrapped_callback(request, *callback_args, **callback_kwargs) …
▶ Local vars
/usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages/django/views/decorators/csrf.py in wrapped_view
        return view_func(*args, **kwargs) …
▶ Local vars
/usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages/django/views/generic/base.py in view
            return self.dispatch(request, *args, **kwargs) …
▶ Local vars
/usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages/rest_framework/views.py in dispatch
        request = self.initialize_request(request, *args, **kwargs) …
▶ Local vars
/usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages/rest_framework/views.py in initialize_request
            authenticators=self.get_authenticators(), …
▶ Local vars
/usr/local/var/pyenv/versions/fc-dabang/lib/python3.7/site-packages/rest_framework/views.py in get_authenticators
        return [auth() for auth in self.authentication_classes] …
▶ Local vars

Спасибо за чтение. Хорошего дня:)

...