我不知道为什么我不能对我的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',)
}
答案 0 :(得分:6)
您是否可能没有正确提出请求?您需要在网址中指定要更新的对象。
例如,url需要包含您要更新的对象的id: http://localhost:8000/api/user/16/
你得到"方法\" PUT \"不允许。"当你没有在请求中指定对象时。
答案 1 :(得分:3)
根据您在此处显示的内容,它应该正常运行。 PUT在列表视图中不起作用,仅在对象详细信息视图中。尝试创建一个对象并查看它的详细信息视图并检查是否可以看到PUT按钮
答案 2 :(得分:0)
在您的PUT请求中,您应该有一个名为' _method'的参数。和价值' PUT'。那就是它。