【问题标题】:Django REST shows non-allowed methods under Allow in the BrowserDjango REST 在浏览器中的允许下显示不允许的方法
【发布时间】:2019-05-17 02:17:33
【问题描述】:

目标

是全局禁用OPTIONS方法。

背景

根据官方 Django REST 文档 (https://www.django-rest-framework.org/api-guide/metadata/),正确的做法是将 DEFAULT_METADATA_CLASS 设置为 None

这解决了问题。尝试发送 OPTIONS curl 请求后,服务器以 405 响应。

问题

但是 API 浏览器仍会在 Allow 下显示实际上不允许的方法:

问题

如何在Django API Browser的Allow下隐藏不支持的方法?

【问题讨论】:

标签: django django-rest-framework


【解决方案1】:

在检查了Disable a method in a ViewSet, django-rest-framework 之后,发现至少有 3 种很好的方法可以解决这个问题:

  1. 使用特定的视图集而不是仅仅继承ModelViewSet
  2. 覆盖 _allowed_methods()
  3. 定义 http_method_names()

决定:

  1. DEFAULT_METADATA_CLASS 设置为None(以确保不公开未定义的方法)。
  2. 为每个 ViewSet 定义 http_method_names(将它们隐藏在 Browser API 中)。

【讨论】:

    猜你喜欢
    • 2012-06-11
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2019-02-12
    • 1970-01-01
    相关资源
    最近更新 更多