【问题标题】:How to control allowed methods in Django Rest Framework?如何控制 Django Rest Framework 中允许的方法?
【发布时间】:2021-05-05 20:50:48
【问题描述】:

我已经看过很多关于这个主题的问题,但似乎没有一个答案能解决我的问题。

我有以下 python 模块:

views.py:

class MyObjectViewSet(viewsets.ModelViewSet):
    queryset = MyObject.objects.all()
    serializer_class = MyObjectSerializer
    permission_classes = [permissions.AllowAny] # For testing
    
    @action(methods='POST', detail=True)
    def my_request(self, request, *args, **kwargslf):
        # Do stuff

urls.py:

router = routers.DefaultRouter()
router.register(r'myobject', views.MyObjectViewSet)

urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

当我尝试向my_request-route 发出实际的POST-request 时,我得到Method POST not allowed

但据我了解,ModelViewSet 应该允许所有方法。即使我在我看来包含http_method_names = ['get', 'post', 'patch', 'put', 'head', 'delete'],它仍然不起作用。

【问题讨论】:

  • 您能否提供您请求的确切 API url。

标签: python django rest django-rest-framework django-views


【解决方案1】:

actionmethods 参数应该是一个方法列表,像这样:

@action(methods=['POST'], detail=True)
def my_request(self, request, *args, **kwargs):
    # Do stuff

【讨论】:

    猜你喜欢
    • 2019-02-12
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2017-03-23
    相关资源
    最近更新 更多