【发布时间】:2016-12-29 05:36:59
【问题描述】:
我有一个模型 Foo,我用它作为我的 vanilla DRF 序列化程序的模型。
models.py
class Foo(models.Model):
name = models.CharField(max_length=20)
description = models.TextField()
is_public = models.BooleanField(default=False)
serializers.py
class FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
views.py
class FooRetrieveAPIView(RetrieveAPIView):
queryset = Foo.objects.all()
serializer_class = FooSerializer
现在前端代码正在使用这个端点的结果,这是识别下一页要显示的基础。无论如何,我需要更改状态200(现有记录)和404(不存在记录)返回的结果结构。
实际结果(来自原版 DRF):
$ curl localhost:8000/foo/1/ # existing record
{"id": 1, "name": "foo", "description": "foo description", is_public=false}
$ curl localhost:8000/foo/2/ # non-existent record
{"detail": "Not found."}
我希望结果如何:
$ curl localhost:8000/foo/1/
{"error": "", "foo": {"id": 1, "name": "foo", "description": "foo description", is_public=false}}
$ curl localhost:8000/foo/2/
{"error": "Some custom error message", "foo": null}
我主要使用 vanilla DRF,所以事情非常简单,所以这种响应结构的自定义对我来说有点新。
使用的 Django 版本:1.9.9
使用的 DRF 版本:3.3.x
【问题讨论】:
标签: django django-rest-framework