如何使用Django REST Serializers?

JB2*_*JB2 0 python django django-rest-framework

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

鉴于我发布了一个JSON字符串,比如api/foo/bar,我该如何编写它的序列化程序?

示例JSON:

{ 'name': 'Mr. Foo', address:'Bar Street' }
Run Code Online (Sandbox Code Playgroud)

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

@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)
Run Code Online (Sandbox Code Playgroud)

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

pin*_*gul 7

由于您不想使用模型,因此必须从头开始创建序列化程序.这样的事情应该可行:

class MySerializer(serializers.Serializer):
    name = serializers.CharField(max_length = 100)
    adress = serializers.CharField(max_length = 100)
Run Code Online (Sandbox Code Playgroud)

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

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

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