问题描述
如果我有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
。
希望这会有所帮助。