gpt4 book ai didi

python - Django-rest框架结构不捕获post或put请求

转载 作者:行者123 更新时间:2023-12-01 04:39:27 26 4
gpt4 key购买 nike

我正在使用 django-rest-framework 来制作 JSON-API 。目前 API 适用于 GET 和 DELETE 请求,但不适用于 POST 和 PUT 请求。不知何故,post 或 put 参数不会被捕获。这是我的序列化器和我的观点。

序列化器.py

class SnippetSerializer(serializers.HyperlinkedModelSerializer):
attribute = serializers.SerializerMethodField()

class Meta:
model = Snippet
fields = ('id','attribute')

def get_attribute(self, obj):
return {
'code': obj.code,
}

View .py

from resources.snippets.models import Snippet
from .serializers import SnippetSerializer
from rest_framework import viewsets

class SnippetViewSet(viewsets.ModelViewSet):
queryset = Snippet.objects.all()
serializer_class = SnippetSerializer

当我使用发布的参数发出 http 请求时 - http://127.0.0.1:8000/snippet/ , { 'code' : 'testtest'}, api 创建一个新的代码片段实例,不带已发布的参数。同样,当我向 http://127.0.0.1:8000/snippet/1 发出 PUT 请求时,数据不会使用 put 参数进行更新。

我在这里遗漏了什么吗?

最佳答案

您的序列化程序没有可写字段。

fields = ('id','attribute')

您在那里定义它只有两个属性,第一个是 id,第二个是只读属性。写入时,两者在逻辑上都会被忽略(id 会被 url 覆盖,而只读则为只读)。

如果您希望能够写入其他字段,则也必须包含它们。如果您在 GET 对象时仍然不希望它们输出,您可以将它们添加为只写字段:

    fields = ('id', 'attribute', 'foo', 'bar')
extra_kwargs = {
'foo': {'write_only': True},
'bar': {'write_only': True},
}

关于python - Django-rest框架结构不捕获post或put请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31064661/

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