python - 如何控制 Django Rest Framework 中允许的方法?
问题描述
我已经看到了很多关于这个主题的问题,但似乎没有一个答案能解决我的问题。
我有以下 python 模块:
视图.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
网址.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'))
]
当我尝试对 -route 发出实际的POST
-request 时my_request
,我得到Method POST not allowed
.
但据我了解,ModelViewSet
应该允许所有方法。即使我包括http_method_names = ['get', 'post', 'patch', 'put', 'head', 'delete']
在我的观点中,它仍然不起作用。
解决方案
methods
action的参数应该是一个方法列表,如下所示:
@action(methods=['POST'], detail=True)
def my_request(self, request, *args, **kwargs):
# Do stuff
推荐阅读
- matrix - 如何获得正确的期末库存数量 - DAX
- xml - 如何根据 xslt 中的条件删除 xml 元素/属性
- azure-resource-manager - 使用 ARM 将 Azure 策略应用到管理组
- git - GIT 是否可以直接推送到子目录?
- python - 如何使用自定义函数将多个 html 表转换为 pandas 数据框?
- javascript - JavaScript 乘法程序无法正常工作
- mysql - sqlalchemy 中特定方言的表和列名,同时重用现有的 ORM 映射
- python - 从字符串末尾开始的分隔符之间的文本
- javascript - 当它转到特定部分时,制作一个活动菜单选项卡锚
- mongodb - 如何控制 find() 以获取所有具有父注释的子项