You need to enable JavaScript to run this app. 如何在drf-spectacular API文档中移除RetrieveUpdateAPIView的PUT方法
优惠活动
大模型
产品
解决方案
定价
更多

如何在drf-spectacular API文档中移除RetrieveUpdateAPIView的PUT方法

移除drf-spectacular生成的多余PUT方法文档的实现方案

首先明确问题根因:
你当前使用的generics.RetrieveUpdateAPIView基类,本身就内置了PUT全量更新的默认方法实现。即便你没有在视图里显式编写PUT逻辑,drf-spectacular在扫描视图的继承方法链时,会默认把基类携带的PUT方法纳入文档生成范围,最终出现冗余的PUT接口条目。

方案1:用drf-spectacular内置装饰器定向排除PUT文档

这是最轻量的调整方式,仅影响文档生成结果,不会改动现有接口的实际运行逻辑。
直接给PersonalInfos视图类加@extend_schema装饰器,显式标记排除PUT方法的文档生成:

from drf_spectacular.utils import extend_schema

@extend_schema(methods=['PUT'], exclude=True)
class PersonalInfos(generics.RetrieveUpdateAPIView):
    # 原有视图代码保持不变
    serializer_class = ClientSerializer
    permission_classes = [IsAuthenticated]
    ...

调整完成后重新生成API文档,对应的PUT方法条目会直接消失。

方案2:从接口定义层面直接禁用PUT方法

这个方案更严谨,从视图层就移除PUT方法的支持,既不会生成冗余文档,也能让实际运行的接口在收到PUT请求时直接返回405 Method Not Allowed,避免无意义的请求处理流程:
在视图类内部显式把put属性设为None即可:

class PersonalInfos(generics.RetrieveUpdateAPIView):
    # 显式标记PUT方法不受支持
    put = None
    # 原有视图代码保持不变
    serializer_class = ClientSerializer
    permission_classes = [IsAuthenticated]
    ...

实现原理:DRF的视图分发逻辑会自动识别当前视图支持的HTTP方法,若对应方法的属性值为None,就会直接把该方法从支持列表中剔除;drf-spectacular在扫描视图时,只会提取实际生效的支持方法,自然不会生成对应的PUT文档。


内容的提问来源于stack exchange,提问作者Arka-cell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 17:15:04