我只是想用https://jasonette.com/编写一个移动应用程序,但它需要每个响应的后端特定JSON格式,如下所示:
{
"$jason": {
"head": {
"title": "{ ˃̵̑ᴥ˂̵̑}",
"actions": {
"$foreground": {
"type": "$reload"
},
"$pull": {
"type": "$reload"
}
}
},
"body": {
"header": {
"style": {
"background": "#ffffff"
}为了测试目的,我序列化了常规的django_user模型:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'first_name', 'last_name', 'email')它返回一个带有用户列表的JSON对象。但是,如何使用附加值自定义这个JSON并将其格式化为Jasonette想要的呢?
发布于 2017-05-17 05:29:28
可以通过在序列化程序中重写.to_representation()方法来更改序列化行为:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'first_name', 'last_name', 'email')
def to_representation(self, user):
data = super().to_representation(user) # the original data
return {
'$jason': {
'head': {
# ...
},
'body': data,
# ...
}
}发布于 2017-05-17 03:01:03
序列化程序将处理对象实例到原始数据类型字典的转换,反之亦然(就像django Form)。如果要增强JSON响应,请重写相应的视图方法。例如,您可以在视图中执行如下操作:
from rest_framework.response import Response
class UserViewSet(ModelViewSet):
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
data = serializer.data
data.update({"foo": "bar"})
return Response(data)https://stackoverflow.com/questions/44013837
复制相似问题