#django-rest-framework
#django-rest-framework
Вопрос:
Ошибка утверждения: ‘LoginView’ должен либо включать атрибут serializer_class, либо переопределять метод get_serializer_class()
Вот класс кода LoginView (GenericAPIView):
def post(self, request):
data = request.data
username = data.get('username', '')
password = data.get('password', '')
user = auth.authenticate(username=username, password=password)
if user:
auth_token = jwt.encode({'username': user.username}, settings.JWT_SECRET_KEY)
serializer = UserSerializer(user)
data = {'user': serializer.data, 'token': auth_token}
return Response(data, status=status.HTTP_200_OK)
return Response({'detail': 'Invalid credential'}, status=status.HTTP_401_UNAUTHORIZED)
Комментарии:
1. Даже если я изменю serializer = UserSerializer(user) data = {‘user’: serializer.data, ‘token’: auth_token} на serializer_class = UserSerializer(user) data = {‘user’: serializer_class.data, ‘token’: auth_token}, это все равно не сработает
2. Это
serializer_class = UserSerializer
просто имя класса иpost
используемоеserializer = self.get_serializer(data=request.data)
. И на самом деле этот сериализатор должен иметьusername
иpassword
. Поэтому вам лучше создать aUserLoginSerializer
с этими полями.