Python 405方法后不允许

Python 405方法后不允许,python,django,django-rest-framework,Python,Django,Django Rest Framework,我编写了以下代码: class UserViewSet(viewsets.ReadOnlyModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer permission_classes = [IsCreation|permissions.IsAuthenticated] def change_password(self, request): pri

我编写了以下代码:

class UserViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [IsCreation|permissions.IsAuthenticated]

    def change_password(self, request):
        print(request.user)
使用
url.py中的相应路由:

path('api/users/password', views.UserViewSet.as_view({'post': 'change_password'}))
但是,当我向
'api/users/password/'
发出请求时,我得到了以下错误:

{
    "detail": "Method \"POST\" not allowed."
}
我在这里做错了什么?

唯一支持httpget方法的方法,正如名称所示

为了支持其他方法,您需要使用类(或其他合适的类)

例如:

class UserViewSet(viewsets.ModelViewSet): # change the super class
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [IsCreation | permissions.IsAuthenticated]
class UserViewSet(viewset.ModelViewSet):#更改超类
queryset=User.objects.all()
serializer\u class=UserSerializer
permission_classes=[IsCreation| permissions.IsAuthenticated]
旁注:方法
更改密码(…)
看起来确实像是一个自定义操作,但您缺少decorator。

唯一支持HTTP GET方法的方法,如名称所示

为了支持其他方法,您需要使用类(或其他合适的类)

例如:

class UserViewSet(viewsets.ModelViewSet): # change the super class
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [IsCreation | permissions.IsAuthenticated]
class UserViewSet(viewset.ModelViewSet):#更改超类
queryset=User.objects.all()
serializer\u class=UserSerializer
permission_classes=[IsCreation| permissions.IsAuthenticated]

旁注:方法
更改密码(…)
看起来确实像一个自定义操作,但您缺少装饰器。

ReadOnlyModelViewSet
只提供“只读”操作,这就是为什么您会得到错误
不允许发布的原因。您可以阅读更多有关它的信息

ReadOnlyModelViewSet
仅提供“只读”操作,这就是您收到错误的原因
不允许发布
。你可以阅读更多关于它的内容