我有一個模型Foo
,我用它作爲我的香草DRF序列化器的模型。如何自定義Django REST Framework GET請求的響應?
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}
我大部分用香草DRF這樣的事情是很簡單所以這種自定義的響應結構對我來說有點新鮮。
使用Django的版本:1.9.9
使用DRF版本:3.3.x
http://stackoverflow.com/questions/35019030/how-to-return-custom-json-in-django-rest-framework – JClarke