Django 中的 Swagger 集成

Swagger Integration in Django

我需要在 Django 中集成 Swagger。那么,谁能讨论一下在Django中集成Swagger的步骤。我需要完整的描述。

提前致谢。

如果您正在尝试使用 Swagger,那么我确定您正在构建一个 API (REST)。因此,回答关于 Swagger 与 Django 集成的广泛问题,您可以使用 Django Rest Framework + Swagger(我推荐)或仅使用 Swagger。在这种情况下你需要做什么:

Django Rest 框架 + Swagger

pip install django djangorestframework django-rest-swagger

然后在您的 settings.py 中包括:

INSTALLED_APPS = [
    ...,
    'rest_framework',
    'rest_framework_swagger',
]

然后在你的 urls.py:

from rest_framework import routers

from yourapp.accounts.views import UserViewSet


router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

urlpatterns = [
    url(r'^api/v1/', include(router.urls)),
    ...
]

views.py中:

from rest_framework import viewsets


class UserViewSet(viewsets.ReadOnlyModelViewSet):
    """
    This viewset automatically provides `list` and `detail` actions.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer

进入主页后/,您将获得带有所有端点渲染的swagger界面(如上例在路由器中注册)。

Django + Swagger

pip install django django-rest-swagger

然后在你的 settings.py:

INSTALLED_APPS = [
    ...
    'rest_framework_swagger',
    ...
]

urls.py中:

from django.conf.urls import url
from views import schema_view


urlpatterns = [
    url('/', schema_view),
    ...
]

在你的例子中 views.py:

from rest_framework.decorators import api_view, renderer_classes
from rest_framework import response, schemas
from rest_framework_swagger.renderers import OpenAPIRenderer, SwaggerUIRenderer


@api_view()
@renderer_classes([OpenAPIRenderer, SwaggerUIRenderer])
def schema_view(request):
    generator = schemas.SchemaGenerator(title='Bookings API')
    return response.Response(generator.get_schema(request=request))

参考:

Django REST Swagger

Django REST Framework