无法在Django Rest Framework中使用PUT更新ModelViewSet
我不太明白为什么我不能像文档中所示那样对我的 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’不被允许”的错误。