Насколько я знаю, роль сериализатора заключается в переводе некоторых специальных объектов в Python-нативный объект или наоборот.
В следующем коде входные данные (из request.data) изначально являются данными не-python, так как http-запрос выполняется в формате JSON.
И после этого мы получаем данные Python на втором этапе (вы можете увидеть в комментарии). Но странная часть заключается в том, что вы снова десериализуете, что делает данные обратно в формат данных, не являющийся собственным Python. Я думаю, что это полностью излишне.
Может кто-нибудь объяснить, почему мы делаем такие вещи?
class LoginAPIView(APIView):
permission_classes = (AllowAny, )
renderer_classes = (UserJSONRenderer,)
serializer_class = LoginSerializer
# 1st step
# 'request.data' would be JSON format,
# since JS or other front-end sends data in JSON format
def post(self, request):
#2nd step
#Here, we can get a native python data - dictionary
user = request.data.get('user',{}) #Here
#3rd step
#putting keyword arguments in serializer
#would return the de-serialized object,
#that is, a non-native python object.
serializer = self.serializer_class(data=user)
serializer.is_valid(raise_exception=True)
return Response(serializer.data, status=status.HTTP_200_OK)