python - 如何全局禁用 Django Rest Framework 上的 OPTIONS 方法?

标签 python django rest django-rest-framework

我想在使用 Django Rest Framework (DRF) 构建的 API 上全局(在所有 API 端点上)禁用 OPTIONS 方法

当前 OPTIONS 调用返回,

{
  "parses": [
    "application/json",
    "application/x-www-form-urlencoded",
    "multipart/form-data"
  ],
  "renders": [
    "application/json"
  ],
  "name": "Login Oauth2",
  "description": ""
}

这是我不想让别人偷看的东西。我想返回一个空白字符 就像 github 在其 API 或其他东西上所做的那样。

我试过了

@api_view(['POST'])
def my_method(request):
    if request.method == 'OPTIONS':
            return Response()

在一个基于函数的 View 上,它返回一个 但检查标题显示,

Allow →POST, OPTIONS, OPTIONS

其中有一个重复的 OPTIONS

我如何实现它?谢谢。

最佳答案

在您的设置中,添加如下内容:

REST_FRAMEWORK = {
    'DEFAULT_METADATA_CLASS': None,
}
if DEBUG:
    # the default value
    REST_FRAMEWORK['DEFAULT_METADATA_CLASS']: 'rest_framework.metadata.SimpleMetadata'

您也可以实现自己的元数据类。将此设置为 None 将使其在 OPTIONS 请求上返回 HTTP 405。

关于python - 如何全局禁用 Django Rest Framework 上的 OPTIONS 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38402094/

相关文章:

django - split 等待 element.visible

django - 如何修复 django-oscar 运输 UnboundLocalError?

apache-flex - 是否可以在 Flex 中执行轻量级 REST 调用?

java - 开发基于 REST 的客户端程序的必要组件和策略是什么?

javascript - Chrome 中的 json-server "Access to localhost was denied"

python - Tkinter Entry 小部件后的事件回调

Python数据结构建议

Django - 从另一个应用程序加载静态文件

python - 具有可选返回值的 Python 函数中的惰性存储和代码执行

python - 在循环外安全地使用 for 循环变量