为何我的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
相关产品推荐
相关产品推荐

