Здравствуйте, мне нужна помощь. Я пытался узнать, как создать токен с помощью django rest framework и pyjwt. Но всякий раз, когда я это делаю, когда собираюсь использовать логин, я получаю сообщение об ошибке, я хотел бы знать, связано ли это с кодом поскольку я видел несколько видео, и у меня такой же код, или это связано с чем-то на моем компьютере, и если да, то как я могу ее решить, ошибка следующая
Внутренняя ошибка сервера: / api / login Traceback (последний вызов последним): файл D: \ Users \ ferna \ Documents \ Cursos \ Youtube \ auth.env \ lib \ site-packages \ django \ core \ handlers \ exception.py, строка 47, во внутреннем ответе = get_response (запрос) Файл D: \ Users \ ferna \ Documents \ Cursos \ Youtube \ auth.env \ lib \ site-packages \ django \ core \ handlers \ base.py, строка 181, в _get_response response = wrapped_callback (request, * callback_args, ** callback_kwargs) Файл D: \ Users \ ferna \ Documents \ Cursos \ Youtube \ auth.env \ lib \ site-packages \ django \ views \ decorators \ csrf.py, строка 54, в wrapped_view return view_func (* args, ** kwargs) Файл D: \ Users \ ferna \ Documents \ Cursos \ Youtube \ auth.env \ lib \ site-packages \ django \ views \ generic \ base.py, строка 70, в просмотр return self.dispatch (request, * args, ** kwargs) Файл D: \ Users \ ferna \ Documents \ Cursos \ Youtube \ auth.env \ lib \ site-packages \ rest_framework \ views.py, строка 509, в отправке response = self.handle_exception (exc) Файл D: \ Users \ ferna \ Documents \ Cursos \ Youtube \ auth.env \ lib \ site-packages \ rest_framewor k \ views.py, строка 469, в handle_exception self.raise_uncaught_exception (exc) Файл D: \ Users \ ferna \ Documents \ Cursos \ Youtube \ auth.env \ lib \ site-packages \ rest_framework \ views.py, строка 480, в raise_uncaught_exception файл D: \ Users \ ferna \ Documents \ Cursos \ Youtube \ auth.env \ lib \ site-packages \ rest_framework \ views.py, строка 506, в отправке response = handler (request, * args, ** kwargs) Файл D: \ Users \ ferna \ Documents \ Cursos \ Youtube \ auth \ users \ views.py, строка 37, в post token = jwt.encode (payload, 'secret', algorithm = 'HS256'). decode ( 'utf-8') AttributeError: объект 'str' не имеет атрибута 'decode' [07 / May / 2021 21:18:23] ← [35; 1mPOST / api / login HTTP / 1.1 500 96900 ← [0m
код для просмотра
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.exceptions import AuthenticationFailed
from .serializers import UserSerializer
from .models import User
import jwt, datetime
# Create your views here.
class RegisterView(APIView):
def post(self, request):
serializer = UserSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
class LoginView(APIView):
def post(self, request):
email = request.data['email']
password = request.data['password']
user = User.objects.filter(email=email).first()
if user is None:
raise AuthenticationFailed('User not found!')
if not user.check_password(password):
raise AuthenticationFailed('Incorrect password!')
payload = {
'id': user.id,
'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=60),
'iat': datetime.datetime.utcnow()
}
token = jwt.encode(payload, 'secret', algorithm='HS256').decode('utf-8')
response = Response()
response.set_cookie(key='jwt', value=token, httponly=True)
response.data = {
'jwt': token
}
return response
PyJWT
v2.0.0 есть ошибка. Попробуйте сменить его версию. Источник: stackoverflow.com/a/65484529/7285863 - person ishak O.   schedule 08.05.2021