Django接入SwaggerAPI接口文档-完整操作(包含错误处理)

Swagger的简介:

  Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,在做后端开发的同时自动生成一个API文档供前端查看,当接口有变动时,对应的接口文档也会自动更新。

Swagger的优势:

  Swagger生成一个API控制台,开发者可快速管理和获取API接口信息

Swagger的部署步骤:

  1. 安装依赖;
  2. 安装swagger;
  3. INSTALLED_APPS 注册;
  4. url主路由设置;
  5. runserver启动服务;
  6. get_link错误处理
  7. staticfiles错误处理
  8. 完成

Swagger的依赖:

  django-rest-framework,换言之在前后端分离开发的时候,swagger是和drf配合使用的。


Swagger的安装:

  pip install django-rest-swagger

Swagger在settings.py中的配置:

INSTALLED_APPS = [

	'django.contrib.admin',

	'django.contrib.auth',

	'django.contrib.contenttypes',

	'django.contrib.sessions',

	'django.contrib.messages',

	'django.contrib.staticfiles',

	'rest_framework',

	'rest_framework_swagger',  # swagger自动生成接口文档

	]

Swagger在项目主路由urls.py中的配置:

    from django.urls import path

    # 导入restframework的辅助函数get_schema_view,获取架构视图

    from rest_framework.schemas import get_schema_view

    # 导入swagger的两个Render类

    from rest_framework_swagger.renderers import SwaggerUIRenderer,OpenAPIRenderer

    # 利用get_schema_view()方法,传入两个Render类得到一个schema view

    schema_view = get_schema_view(title='API',renderer_classes=[SwaggerUIRenderer,OpenAPIRenderer])

    # 配置接口文档的访问路径

    urlpatterns = [
        path('docs/', schema_view, name="swagger")
    ]

Swagger接口说明:

    在接口类视图里面写上注释,可以被当成接口文档说明显示。

Swagger测试:

    python manage.py runserver 启动服务,浏览器访问localhost:8001/docs/或者http://127.0.0.1:8001/docs/。8001为端口,实际测试中以自己的端口为准。

Swagger错误处理:

    错误1:'AutoSchema' object has no attribute 'get_link'

    

 

 

     解决:REST_FRAMEWORK中添加'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',  # rest_framework_swagger的配置

    REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema', # rest_framework_swagger的配置}

    

 

    错误2:'staticfiles' is not a registered tag library. Must be one of:

    

 

 

     解决:找到虚拟环境文件夹env/lib/python3.10/site-packages/rest_framework_swagger/templates/rest_framework_swagger/index.html,将第二行的{% load staticfiles %} 修改为:{% load static %}

     

 

 

     

 

 

     刷新浏览器,重新测试。

    

 

posted @   侬侬发  阅读(890)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示