1

Django DRF Swagger 文档未显示注册为 ROUTERS(不是 urlpattern)的 ModelViewSets API 端点。在下面的示例中,标准文档 (rest_framework.documentation) 显示/记录了这个“follow_up”API,而 swagger 文档没有,完全跳过没有显示。对于 urlpatterns 来说,一切都很好,下面的“this_is_showing”代码被很好地记录了:

来自 urls.py 文件

from rest_framework.documentation import include_docs_urls
from rest_framework.routers import SimpleRouter, DefaultRouter
from rest_framework_swagger.views import get_swagger_view
from . import views

schema_view = get_swagger_view(title=MY APP API')

router = DefaultRouter()
router.register("follow_up", views.FollowUpViewSet)

urlpatterns = [
url(r'^this_is_showing/$', views.SomeView.as_view(), name='view'),

url(r'docs/', include_docs_urls(
    title='API Docs', public=True)), 

url(r'^swag/', schema_view),

]

我错过了什么?

django-rest-swagger==2.2.0,djangorestframework==3.11.0

编辑 1

django-rest-swagger 包不再维护!

移至 drf_yasg:内部带有 swagger 和 reDocs 的出色工具。

4

1 回答 1

0

DRF 文档建议,如果您想获得自动生成的 API 列表视图,您需要使用 DefaultRouter。我想知道 SimpleRouter 是否缺少 django-rest-swagger 用来获取其信息的内省机制(或其他挂钩)。

https://www.django-rest-framework.org/api-guide/routers/#defaultrouter

编辑 1

DRF-swagger 文档说他们的示例使用了 DRF 示例:https ://django-rest-swagger.readthedocs.io/en/latest/

DRF 示例使用默认路由器:https ://github.com/encode/rest-framework-tutorial/blob/master/snippets/urls.py

编辑 2

我相信您还需要在 URL 模式中的某处包含路由器。如果你看这里:https ://github.com/encode/rest-framework-tutorial/blob/master/snippets/urls.py

不仅使用了 DefaultRouter,而且注册的路由器也包含在 URL 模式中:

from django.conf.urls import include, url
from rest_framework.routers import DefaultRouter

from snippets import views

# Create a router and register our viewsets with it.
router = DefaultRouter()
router.register(r'snippets', views.SnippetViewSet)
router.register(r'users', views.UserViewSet)

# The API URLs are now determined automatically by the router.
# Additionally, we include the login URLs for the browsable API.
urlpatterns = [
    url(r'^', include(router.urls))
]
于 2020-07-05T14:28:57.153 回答