Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django rest框架自定义序列化程序&x27;s输出_Python_Django_Django Rest Framework - Fatal编程技术网

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