无法在Django Rest Framework中使用PUT更新ModelViewSet

6 投票
3 回答
4618 浏览
提问于 2025-04-18 17:25

我不太明白为什么我不能像文档中所示那样对我的 ModelViewSet 进行 PUT 请求,但 PUT 请求就是不管用。有没有什么想法?我在下面附上了我的视图和序列化器。

class UserProfileViewSet(viewsets.ModelViewSet):
    queryset = UserProfile.objects.all()
    serializer_class = UserProfileSerializer
    filter_fields = ('user', 'id', 'account_type')

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile`

REST_FRAMEWORK = {
    'DEFAULT_MODEL_SERIALIZER_CLASS':
        'rest_framework.serializers.ModelSerializer',
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.AllowAny',
    ),
    'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',)
}

3 个回答

0

在你的PUT请求中,应该有一个叫做'_method'的参数,值设置为'PUT'。就这么简单。

4

根据你展示的内容,这个应该是可以工作的。PUT操作在列表视图中是无法使用的,只能在对象的详细视图中使用。你可以试着创建一个对象,然后查看它的详细信息,看看那里是否有一个PUT按钮。

8

你是不是请求发得不对呢?你需要在网址里指定你想要更新的对象。

比如,网址里需要包含你想更新的对象的ID:http://localhost:8000/api/user/16/

当你在请求中没有指定对象时,就会出现“方法‘PUT’不被允许”的错误。

撰写回答