如何使用Django REST序列化器? [英] How to use Django REST Serializers?

查看:49
本文介绍了如何使用Django REST序列化器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,在阅读Django REST Framework文档和大量教程之后,我仍然很难理解如何使用Django序列化器将传入的POST(JSON)数据转换为Python对象(抱歉,我是新来的)).

So, after reading the Django REST Framework document, and a bunch of tutorials, I am still having trouble understanding how to use the Django serializers to convert incoming POST (JSON) data into a Python object (sorry, I'm new).

鉴于我要将JSON字符串发布到api/foo/bar,我该如何编写其序列化程序?

Given that I am posting a JSON string to, say, api/foo/bar, how do I write its serializer?

示例JSON:

{ 'name': 'Mr. Foo', address:'Bar Street' }

我的控制器Foo包含如下的bar方法:

My controller, Foo contains a bar method as follows:

@detail_route(
    methods=['post']
)
def bar(self, request, uuid=None):
    serializer = MySampleSerializer(data=request.DATA)

    something.clone(serializer.object)
    return Response(status=status.HTTP_201_CREATED)

有人可以向我解释我的序列化程序应该是什么样的吗?以及如何从序列化程序访问序列化的数据?

Can somebody explain to me what should my serializer look like? And how do I access the serialized data from the serializer?

推荐答案

由于您不想使用模型,因此必须从头开始创建序列化程序.像这样的东西应该可以工作:

As you do not want to use a model, you have to create the serializer from scratch. Something like this should maybe work:

class MySerializer(serializers.Serializer):
    name = serializers.CharField(max_length = 100)
    adress = serializers.CharField(max_length = 100)

然后您可以在这样的请求中使用它:

And then you could use it in a request like this:

def bar(self, request, uuid=None):
    data = JSONParser().parse(request)
    serializer = MySerializer(data = data)
    return Response(status=status.HTTP_201_CREATED)

但是请注意,由于您尚未创建Django模型,因此您将无法保存序列化的数据(因此,数据库中将不会保存任何内容)

Note however, as you have not created an Django model, you will not be able to save the serialized data (and thus nothing will be saved in the database)

这篇关于如何使用Django REST序列化器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆