gpt4 book ai didi

python - django-rest-framework 自定义序列化程序的输出

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:32 26 4
gpt4 key购买 nike

使用以下模型和序列化器:

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 中对其进行硬编码。

最佳答案

您还没有真正指定您需要对此消息进行什么类型的控制,或者您希望能够在何处定义它(在序列化程序级别, View 级别?)。

您始终可以像这样重写调度方法(MySimpleView View 类):

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

我假设您想根据响应状态控制您的自定义消息,所以这似乎是一个完美的地方,因为调度方法返回响应本身。

所以现在只需将它变成一个不错的 mixin 并在您的 View 中重用它..

但如果您不需要响应状态,那么自定义渲染器就是您的最佳选择。

关于python - django-rest-framework 自定义序列化程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27178597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com