Създадох следния сериализатор:
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = get_user_model()
fields = (
"url", "username", "email", "password",
)
write_only_fields = ("password",)
Аз също въведох методите за създаване и актуализиране. Сега, ако се опитам да създам потребител със следните данни:
{
"username": "foo",
"email": "foo@thefoo.net",
"password": "foo2016"
}
Бих получил следния отговор на json:
{
"url": "http://someurl.com/catalog/api/users/11/",
"username": "foo",
"email": "foo@thefoo.net"
}
Това, което бих искал да има, е реакция на JSON, която има атрибут, показващ дали операцията е успешна, както следва:
{
"success": true,
"data": {
"url": "http://someurl.com/foo/users/11/",
"username": "foo",
"email": "foo@thefoo.net"
}
}
Ако възникне грешка, отговорът ще изглежда така:
{
"success": false,
"data": {
"username": [
"This field is required."
]
}
}
и не трябва да бъде така:
{
"username": [
"This field is required."
]
}
Причината, поради която правя това, е да подобря обработката на грешките от предната страна.
Отговори:
0 за отговор № 1В класа Meta бихте могли да добавите extra_kwargs
като extra_kwargs = {"success": True}
Моля, вижте документацията тук: http://www.django-rest-framework.org/api-guide/serializers/#additional-keyword-arguments
Надявам се това да помогне. Но съм съгласен с Zhandos Zhylkaidar относно проверката на HTTP кода за HTTP грешки.
0 за отговор № 2
Тъй като променяте резултата, трябва да отмените рендер така че да обвива съдържанието на сериализатора в:
{
"success": false/true,
"data": <content>
}