You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决drf-spectacular中api_view搭配使用时无接口定义问题

问题解决:drf-spectacular 显示“No operations defined in spec!”

你的代码核心问题是混用了类视图(CBV)和函数视图(FBV)的装饰器——把仅适用于FBV的@api_view装饰到了CBV的get方法上,导致drf-spectacular无法识别视图的接口定义。

正确写法分两种场景:

场景1:使用类视图(CBV)

类视图的方法不需要@api_view装饰,直接用@extend_schema标注接口即可:

# views.py
from rest_framework.views import APIView
from drf_spectacular.utils import extend_schema, OpenApiTypes

class FeedView(APIView):
    @extend_schema(responses=OpenApiTypes.FLOAT)
    def get(self, request, format=None):
        pass  # pragma: no cover

场景2:使用函数视图(FBV)

如果要写FBV,需把视图定义为独立函数,而非类的方法:

# views.py
from rest_framework.decorators import api_view
from drf_spectacular.utils import extend_schema, OpenApiTypes

@extend_schema(responses=OpenApiTypes.FLOAT)
@api_view(['GET'])
def feed_view(request, format=None):
    pass  # pragma: no cover

# 对应的urls.py修改
path('pi/', feed_view),

额外检查项

确保项目配置正确:

  • 将drf-spectacular加入INSTALLED_APPS:
INSTALLED_APPS = [
    # ... 其他应用
    'drf_spectacular',
]
  • 在REST_FRAMEWORK配置中指定schema类:
REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}

内容的提问来源于stack exchange,提问作者Tony.Luo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:17:11