如何在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
相关产品推荐
相关产品推荐

