Django Rest Framework SimpleJWT – удаление переменной, ссылающейся на «request.body», вызывает ошибку «RawPostDataExcept ⇐ Python
Django Rest Framework SimpleJWT – удаление переменной, ссылающейся на «request.body», вызывает ошибку «RawPostDataExcept
У меня есть проект Django 4.2.6, использующий Python 3.10 и библиотеку rest_framework_simplejwt. Я реализовал функцию входа, и она отлично работает, когда я включаю строку body = request.body, хотя я не использую body где-либо в функции. Однако когда я удаляю эту строку, выдается следующая ошибка:
«RawPostDataException в /auth/signin/ — вы не можете получить доступ к телу после чтения из потока данных запроса».
Я пытался понять, почему это происходит, но не смог понять даже после прочтения документации. Может ли кто-нибудь помочь мне понять, зачем нужна эта строка и есть ли более чистый или лучший способ написать эту функцию? Вот мой код:
@api_view(['POST']) определение входа (запрос): тело = запрос.тело token_view = jwt_views.TokenObtainPairView.as_view() token_response = token_view(request._request) если token_response.status_code == status.HTTP_200_OK: данные = запрос.данные user = User.objects.filter(username=data['username']).first() данные = { «токен_доступа»: str(token_response.data['access']), «refresh_token»: str(token_response.data['refresh']), "user_access": { "is_staff": user.is_staff, «is_admin»: user.is_superuser } } вернуть ответ (данные, статус = статус.HTTP_200_OK) вернуть токен_ответ
У меня есть проект Django 4.2.6, использующий Python 3.10 и библиотеку rest_framework_simplejwt. Я реализовал функцию входа, и она отлично работает, когда я включаю строку body = request.body, хотя я не использую body где-либо в функции. Однако когда я удаляю эту строку, выдается следующая ошибка:
«RawPostDataException в /auth/signin/ — вы не можете получить доступ к телу после чтения из потока данных запроса».
Я пытался понять, почему это происходит, но не смог понять даже после прочтения документации. Может ли кто-нибудь помочь мне понять, зачем нужна эта строка и есть ли более чистый или лучший способ написать эту функцию? Вот мой код:
@api_view(['POST']) определение входа (запрос): тело = запрос.тело token_view = jwt_views.TokenObtainPairView.as_view() token_response = token_view(request._request) если token_response.status_code == status.HTTP_200_OK: данные = запрос.данные user = User.objects.filter(username=data['username']).first() данные = { «токен_доступа»: str(token_response.data['access']), «refresh_token»: str(token_response.data['refresh']), "user_access": { "is_staff": user.is_staff, «is_admin»: user.is_superuser } } вернуть ответ (данные, статус = статус.HTTP_200_OK) вернуть токен_ответ
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение