Python django rest框架自定义序列化程序&x27;s输出
使用以下模型和序列化程序:Python django rest框架自定义序列化程序&x27;s输出,python,django,django-rest-framework,Python,Django,Django Rest Framework,使用以下模型和序列化程序: class Person(models.Model): name = models.CharField(max_length=30) class PersonSerializer(serializers.Serializer): class Meta: model = User fields = ('name',) 我得到: [ {"name": "Jon"}, {"name": "Joe"},
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"
}
这里的
消息是在运行时生成的,否则我可能会在JSONRenderer中对其进行硬编码。您还没有真正指定对此消息需要什么类型的控件,或者希望在何处定义它(在序列化程序级别,视图级别?)
您始终可以像这样覆盖分派方法(MySimpleView
view类):
我假设您希望根据响应状态控制自定义消息,因此这似乎是一个完美的地方,因为dispatch方法返回响应本身
因此,现在只需将其制作成一个漂亮的mixin,并在视图中重用它
但是,如果不需要响应状态,则可以使用自定义渲染器。您应该编写自定义渲染器类。查看自定义渲染器
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