Serializer avec des objets multiple
Bonjour,
J'ai un front en React et un back avec Django
Pour le connexion, j'utilise le module django-rest-framework-simplejwt pour générer un token
Ce package fournit une API refreshToken qui renvoie un nouveau Token.
Je voudrais également renvoyer le token et les infos de l'utilisateur connecté
Voici ce que j'ai fait :
Mon serializer
Code:
1 2 3 4
|
class MyTokenRefreshSerializer(serializers.Serializer):
token = TokenRefreshSerializer()
user = UserSerializer() |
La vue
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
class MyTokenRefreshView(TokenRefreshView):
serializer_class = MyTokenRefreshSerializer
def post(self, request, *args, **kwargs):
refreshToken = request.data
serializerRefresh = TokenRefreshSerializer(data=refreshToken)
if (serializerRefresh.is_valid()):
#Je récupère le token et les infos de l'utilisateur à partir de celui-ci
validated_token = JWTTokenUserAuthentication.get_validated_token(self,serializerRefresh.validated_data.get('access'))
userId = JWTTokenUserAuthentication.get_user(self,validated_token)
user = User.objects.get(pk=userId.pk)
serializer = UserSerializer(user)
data = OrderedDict([('token',refreshToken),('user',user)])
tokenRefreshCustomSerializer = MyTokenRefreshSerializer(data=data)
if (tokenRefreshCustomSerializer.is_valid()):
return Response(tokenRefreshCustomSerializer.validated_data)
return Response(tokenRefreshCustomSerializer.errors) |
Voici l'erreur retourné à l'exécution
Code:
1 2 3 4 5 6 7 8
|
{
"user": {
"non_field_errors": [
"Invalid data. Expected a dictionary, but got User."
]
}
} |
Est ce que je suis parti sur la bonne voie pour retourner mon token et les infos utilisateur ? Si oui, que dois-je faire pour corriger l'erreur ? Sinon, comment faire ?
Merci pour votre aide