Я делаю 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
Спасибо за чтение. Хорошего дня:)