#python-3.x #django #django-rest-framework
Вопрос:
Мой код: serializers.py:
class AuthenticationSerializer(serializers.Serializer):
email = serializers.CharField(max_length=255)
password = serializers.CharField(max_length=128, write_only=True)
def validate(self, data):
email = data.get('email')
password = data.get('password')
user = User.objects.get(email=email, password=password)
if user is None:
raise serializers.ValidationError(
'A user with this email and password was not found.' ' ' email ' ' password
)
return {
'email': user.email,
'username': user.username,
}
views.py:
class Authentication(CreateAPIView):
serializer_class = AuthenticationSerializer
def authentication(request):
user = request.data.get('user', {})
serializer = self.serializer_class(data=user)
serializer.is_valid(raise_exception=True)
return user, Response(serializer.data, status=status.HTTP_200_OK)
Мне нужно создать аутентификацию и после дать пользователю JWTToken, но я не могу выполнить аутентификацию. Я работаю с этой библиотекой 2 дня. Может быть, это потому, что я использую CreateAPIView
? Но чем я могу заменить CreateAPIView?
Комментарии:
1. Ваш сериализатор не является
ModelSerializer
, следовательно, для него нет методаserialzer.save()
, поэтому вы должны определить его, если хотите создавать элементы.2. Мне нужно пройти аутентификацию перед созданием токена JWT, потому что я не могу создать токен JWT, если пользователь не прошел аутентификацию.
3. Я думаю, вам нужно переименовать
authenticate()
вcreate()
. Однако я предлагаю использоватьdjango-rest-framework-simplejwt
, а не реализовывать аутентификацию самостоятельно.