簡體   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