使用以下模型和序列化程序:
class Person(models.Model):
name = models.CharField(max_length=30)
class PersonSerializer(serializers.Serializer):
class Meta:
model = User
fields = ('name',)
我得到:
[
{"name": "Jon"},
{"name": "Joe"},
{"name": "Jim"}
]
如何自定义序列化程序,使其输出如下内容:
{
"out": [
{"name": "Jon"},
{"name": "Joe"},
{"name": "Jim"}
],
"message": "success"
}
这里message
是在运行时构建的,否则我可以用 JSONRenderer 对其进行硬编码。
您尚未真正指定对此消息需要哪种类型的控件,或者您希望能够在何处定义它(在序列化程序级别,视图级别?
您始终可以像这样重写调度方法(MySimpleView
视图类):
def dispatch(self, request, *args, **kwargs):
response = super(MySimpleView, self).dispatch(request, *args, **kwargs)
data = {}
data['out'] = response.data
data['message'] = "My message"
response.data = data
return response
我假设您想根据响应状态控制自定义消息,因此这似乎是一个完美的地方,因为调度方法返回响应本身。
所以现在只需把它做成一个很好的混合,并在你的视图中重用它。
但是,如果您不需要响应状态,那么自定义渲染器就是您的最佳选择。