python - 不允许使用 PATCH 方法
问题描述
我试图在 Django 中向我的 API 添加一个 Patch 方法,但我总是以“不允许的方法”结束。
我在 Django Rest Framework 文档中添加了 mixins.UpdateModelMixin,但是它仍然返回相同的错误。我看了看,没有找到我需要在哪里授权补丁才能被允许。
这是 urls.py 和 views.py 中与该视图和路径声明相关的代码。
网址.py
schema_view = get_schema_view(
openapi.Info(
title="WAF Management Portal API",
default_version="v1",
description="REST api for interaction between Frontend and Backend.",
contact=openapi.Contact(email="soc-dev-automation@bell.ca"),
),
public=True,
permission_classes=(permissions.AllowAny,),
)
path(
'action/dothis/', ActionApiView.as_view(), name="action_api_view"
),
视图.py
class ActionApiView(mixins.UpdateModelMixin, ActionAPIView):
"""
post:
add one or more settings to selected policy
patch:
modify or more settings to selected policy
"""
def get_queryset(self):
return Policy.objects.allowed_to_user(self.request.user)
def get_serializer(self, *args, **kwargs):
return SettingsSerializer(*args, **kwargs)
@swagger_auto_schema()
def post(self, request):
queryset = self.filter_queryset(self.get_queryset())
serializer = self.get_serializer(data=request.data)
if serializer.is_valid():
selected_policies = serializer.get_selected_policies(queryset)
.....do some data manipulation (included action_id variable)...
response = {
....prepare response
}
return redirect("another_view", action_id=action_id)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@swagger_auto_schema()
def patch(self, request):
queryset = self.filter_queryset(self.get_queryset())
serializer = self.get_serializer(data=request.data)
if serializer.is_valid():
selected_policies = serializer.get_selected_policies(queryset)
.....do some data manipulation (included action_id variable)...
response = {
....prepare response
}
return redirect("another_view", action_id=action_id)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
解决方案
如果ActionAPIView
继承自ModelViewSet
,您可能需要将补丁函数重命名为update
并将您的网址更改为
path(
'action/dothis/', ActionApiView.as_view({'patch':'update'}), name="action_api_view"
),
推荐阅读
- mysql - 在 `group by` 的情况下,可以在 `select` 中使用多个聚合函数吗?
- python - “提供的关键元素与架构不匹配”DynamoDB (boto3) 错误
- xpages - 注意:有没有什么好的工具可以导出设计元素,尤其是 XPages 和自定义控件来编写设计规范文档?
- excel - 使用表格中的行和列值查找值的 Excel 公式
- java - Android Java:EditText 文本选择缺少上下文菜单
- c# - C# Datetime - 添加天或月
- python - Python 的 Qt Web GUI 替代品
- python - AttributeError: Cutome User 模型对象没有属性“密码”
- python - 错误:找不到满足要求的版本 win32console
- android - Android Dark Theme - 在应用程序上实现深色主题的最佳方式