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

为何我的drf-yasg(drf-swagger)API文档未按模型分类?

解决drf-yasg API文档按模型分类展示不一致的问题

虽然两个项目的urls.py配置相同,但API文档展示差异的核心原因在于视图层的标签配置、路由注册方式或依赖版本,以下是具体解决步骤:

  • 给视图添加模型分类标签
    项目1的视图应该为每个API指定了对应模型的tags属性,Swagger会自动将同标签的API归为一类。在视图集或APIView中添加配置:

    from rest_framework import viewsets
    
    class UserViewSet(viewsets.ModelViewSet):
        # 其他业务配置...
        tags = ["用户模型"]  # 标签名称对应模型名称
    

    也可以用装饰器给单个视图方法指定标签:

    from drf_yasg.utils import swagger_auto_schema
    
    @swagger_auto_schema(tags=["用户模型"])
    def list(self, request, *args, **kwargs):
        return super().list(request, *args, **kwargs)
    
  • 规范路由注册方式
    确保项目2使用DRF的DefaultRouter注册视图集,而非手动编写路由。Router会自动生成规范的URL结构,配合tags更易实现模型分类:

    from rest_framework.routers import DefaultRouter
    
    router = DefaultRouter()
    router.register(r'users', UserViewSet)
    urlpatterns += router.urls
    
  • 统一依赖版本
    检查两个项目的requirements.txt,确保drf-yasg和Django REST Framework的版本完全一致,版本差异可能导致展示逻辑不同。例如:

    djangorestframework==3.14.0
    drf-yasg==1.21.7
    
  • 确认Schema生成范围
    若项目1在get_schema_view中指定了patterns参数,需同步到项目2,明确要生成文档的路由范围:

    schema_view = get_schema_view(
        openapi.Info(
            title="Nepal Hearing & Speech Care Center - Nepal",
            default_version="v1",
            description="API Documentation",
            terms_of_service="2022",
            contact=openapi.Contact(email="info@merakitechs.com"),
            license=openapi.License(name="Private Project"),
        ),
        public=False,
        patterns=urlpatterns,  # 指定生成文档的路由列表
    )
    

完成以上配置后,项目2的API文档即可实现按模型分类的展示效果。

内容的提问来源于stack exchange,提问作者Bibek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:05:27