繁体   English   中英

405 不允许发布方法

[英]405 Method Post Not Allowed

我写了以下代码:

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

    def change_password(self, request):
        print(request.user)

使用urls.py中的相应路由:

path('api/users/password', views.UserViewSet.as_view({'post': 'change_password'}))

但是当我向'api/users/password/'发出请求时,我收到此错误:

{
    "detail": "Method \"POST\" not allowed."
}

我在这里做错了什么?

顾名思义, ReadOnlyModelViewSet只支持HTTP GET方法。

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

例如:

class UserViewSet(viewsets.ModelViewSet): # change the super class
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [IsCreation | permissions.IsAuthenticated]

旁注方法change_password(...)确实看起来像自定义操作,但您缺少@action装饰器。

ReadOnlyModelViewSet仅提供“只读”操作,这就是您收到错误POST not allowed的原因。 你可以在这里阅读更多关于它的信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM