Django RESTful项目中使用Swagger文档生成器

什么是Swagger

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

作用

  • 接口文档在线自动生成
  • 功能测试

Swagger优势

  1. Swagger可生成一个具有互动性的API控制台,开发者可快速学习和尝试API
  2. Swagger可生成客户端SDK代码,用于不同平台上(Java、Python...)的实现
  3. Swagger文件可在许多不同的平台上从代码注释中自动生成
  4. Swagger有一个强大的社区,里面有许多强悍的贡献者

在Djangorestful项目中使用swagger

安装

pip install django-rest-swagger

添加到 Django 设置中。'rest_framework_swagger'INSTALLED_APPS

settings.py

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

urls.py添加路由

from django.conf.urls import urlfrom rest_framework_swagger.views import get_swagger_view
schema_view = get_swagger_view(title='Pastebin API')
urlpatterns = [    url(r'^$', schema_view)]

在浏览器中查看

图片

在settings.py添加额外配置项

# swagger 配置项SWAGGER_SETTINGS = {    # 基础样式    'SECURITY_DEFINITIONS': {        "basic":{            'type': 'basic'        }    },    # 如果需要登录才能够查看接口文档, 登录的链接使用restframework自带的.    'LOGIN_URL': 'rest_framework:login',    'LOGOUT_URL': 'rest_framework:logout',    # 'DOC_EXPANSION': None,    # 'SHOW_REQUEST_HEADERS':True,    # 'USE_SESSION_AUTH': True,    # 'DOC_EXPANSION': 'list',    # 接口文档中方法列表以首字母升序排列    'APIS_SORTER': 'alpha',    # 如果支持json提交, 则接口文档中包含json输入框    'JSON_EDITOR': True,    # 方法列表字母排序    'OPERATIONS_SORTER': 'alpha',    'VALIDATOR_URL': None,}

高级部分

Django REST Swagger 包含两个渲染器OpenAPIRenderer和SwaggerUIRenderer。OpenAPIRenderer负责生成 JSON 规范,SwaggerUIRenderer负责UI呈现,即HTML/JS/CSS。要呈现 UI,必须包含两个渲染器。

Swagger模版定制模板

通过覆盖路径site-packages/rest_framework_swagger/templates/rest_framework_swagger/index.html文件部分代码即可实现页面定制。

可以自定义区域:

● {% block extra_styles %}添加其他样式表● {% block extra_scripts %}添加其他脚本。● {% block user_context_message %}自定义“你好,用户”消息(仅限 Django 会话)● {% block extra_nav %}导航栏中其他内容的占位符。● {% block logo %}导航栏的徽标区域。

出现报错信息:'staticfiles' is not a registered tag library。这是因为在django4.x中关于 {% load staticfiles %} 部分做了修改 ,

解决方法是使用新语法:{% load static %}

找到报错的文件位置:site-packages/rest_framework_swagger/templates/rest_framework_swagger/index.html

用编辑器,将第二行的{% load staticfiles %} 修改为:{% load static %}

刷新显示正确

图片

THE END