J'ai créé le sérialiseur suivant:
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = get_user_model()
fields = (
"url", "username", "email", "password",
)
write_only_fields = ("password",)
J'ai également implémenté les méthodes de création et de mise à jour. Maintenant, si j'essaie de créer un utilisateur avec les données suivantes:
{
"username": "foo",
"email": "foo@thefoo.net",
"password": "foo2016"
}
J'obtiendrais la réponse json suivante:
{
"url": "http://someurl.com/catalog/api/users/11/",
"username": "foo",
"email": "foo@thefoo.net"
}
Ce que je voudrais, c'est une réponse JSON qui a un attribut indiquant si l'opération est réussie, comme suit:
{
"success": true,
"data": {
"url": "http://someurl.com/foo/users/11/",
"username": "foo",
"email": "foo@thefoo.net"
}
}
Si une erreur se produisait, la réponse ressemblerait à ceci:
{
"success": false,
"data": {
"username": [
"This field is required."
]
}
}
et ne devrait pas être comme ça:
{
"username": [
"This field is required."
]
}
La raison pour laquelle je le fais est d'améliorer la gestion des erreurs du côté frontal.
Réponses:
0 pour la réponse № 1Dans la classe Meta, vous pourriez ajouter extra_kwargs
comme extra_kwargs = {"success": True}
Veuillez vous référer à la documentation ici: http://www.django-rest-framework.org/api-guide/serializers/#additional-keyword-arguments
J'espère que ça aide. Mais je suis d’accord avec Zhandos Zhylkaidar concernant la vérification du code de réponse HTTP pour les erreurs HTTP.
0 pour la réponse № 2
Comme vous modifiez le résultat, vous devez remplacer le moteur de rendu afin qu'il encapsule le contenu du sérialiseur dans:
{
"success": false/true,
"data": <content>
}