将来自不同应用程序的多个swagger文档合并到一个swagger仪表板[drf_yasg]

问题描述

如果我有5个应用程序(django),并且带有相应的swagger文档,是否可以将所有swagger文档组合为一个swagger文档。 我正在使用django rest框架。

解决方法

我假设您的意思是在一个Django项目中有5个Django应用程序。在这种情况下,可以,而且非常简单。

这是我通常将应用程序组合到单个urlpattern中的方式:

project / app1 / urls.py:

from django.urls import include,path
from rest_framework.routers import SimpleRouter
from .views import MyModelViewSet,MyClassBasedModelView,my_function_based_model_view

api_router = SimpleRouter()
api_router.register(r"somepattern",MyModelViewSet)
api_urlpatterns = [
    path("",include(api_router.urls)),path("someotherpattern",MyClassBasedModelView.as_view()),path("yetanotherpattern",my_function_based_view),]

对每个应用程序中的每个“ urls.py”文件执行此操作。然后在主“ urls.py”(您的设置中引用的那个)中执行以下操作:

project / urls.py:

from app1.urls import api_urlpatterns as app1_api_urlpatterns
from app2.urls import api_urlpatterns as app2_api_urlpatterns
# ...etc... 

api_urlpatterns = []
api_urlpatterns += app1_api_urlpatterns
api_urlpatterns += app2_api_urlpatterns

urlpatterns = [
    path("api/",include(api_urlpatterns)),# other (non DRF) views...
]

您只需按照https://drf-yasg.readthedocs.io/en/stable/readme.html#quickstart将标准 drf_yasg 内容添加到“ project / urls.py”中的api_urlpatterns

希望这会有所帮助。