Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Django Swagger接口文档生成

Django Swagger接口文档生成

作者头像
py3study
发布于 2020-08-06 02:54:41
发布于 2020-08-06 02:54:41
4.5K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

一、概述

引言

当接口开发完成,紧接着需要编写接口文档。传统的接口文档使用Word编写,or一些接口文档管理平台进行编写,但此类接口文档维护更新比较麻烦,每次接口有变更,需要手动修改接口文档。为了改善这种情况,推荐使用Swagger来管理接口文档,实现接口文档的自动更新。

简介

Swagger:是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体目标是使客户端和文件系统源代码作为服务器以同样的速度来更新。当接口有变动时,对应的接口文档也会自动更新。

如:接口测试站点(http://httpbin.org/#/),也是利用Swagger来生成接口文档

Swagger优势

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

二、Django接入Swagger

大致步骤

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.安装django-rest-swagger
2.进入到setting.py文件,添加django-rest-swagger应用
3.进入到views.py,将之前定义的UserViewSet和GroupViewset补充注释
4.在urls.py中添加get_schema_view辅助函数
5.启动Django服务,检测Swagger接口文档配置效果

环境说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python 3.7.3

Django 2.2.4

djangorestframework==3.9.2

django-rest-swagger 2.2.0

安装模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip3 install djangorestframework==3.9.2

注意:djangorestframework版本不能高于3.9.2,否则访问/docs/出现以下错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Expected a `coreapi.Document` instance

按照网友的意思,Django Swagger模块已经不维护了,只能支持到3.9.2

另外,django版本不能大于3.x。

配置setting.py

使用Pycharm新建一个项目:t_swagger,app名为api

 修改t_swagger/settings.py,增加2行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'api.apps.ApiConfig',
    'rest_framework',
    'rest_framework_swagger'
]

在swagger/settings.py末尾处,增加Swagger配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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,
}

配置serializers.py

进入api(应用目录),新建文件serializers.py,内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 序列化
from django.contrib.auth.models import User,Group
from  rest_framework import serializers

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = "__all__"

class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = "__all__"

这里是将django自带的2个表,进行序列化。

配置views.py

进入api(应用目录),修改views.py,完整内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.shortcuts import render, HttpResponse
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from api.serializers import UserSerializer, GroupSerializer


# Create your views here.

class UserViewSet(viewsets.ModelViewSet):
    """
        retrieve:
            返回用户实例
        list:
            返回所有用户,按最近加入的用户排序
        create:
            创建新用户
        delete:
            删除现有用户
        partial_update:
            更新现有用户上的一个或多个字段
        update:
            更新用户
    """
    '''查看,编辑用户的界面'''
    queryset = User.objects.all().order_by('id')
    serializer_class = UserSerializer
    print(serializer_class, type(serializer_class))


class GroupViewSet(viewsets.ModelViewSet):
    '''
        retrieve:
            返回组实例
        list:
            返回按最近加入的组排序的所有组
        create:
            创建新组
        delete:
            删除现有组
        partial_update:
            更新现有组上的一个或多个字段
        update:
            更新一个组
    '''
    '''查看,编辑组的界面'''
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

注意:这里不需要return,它会返回表数据的。

配置urls.py

修改文件t_swagger/urls.py,完整内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.contrib import admin
from django.urls import path,include
from rest_framework import routers  # 路由配置模块
from api import views

# 路由
router = routers.DefaultRouter()
router.register(r'users',views.UserViewSet,base_name='user')
router.register(r'groups',views.GroupViewSet)

# 重要的是如下三行
from rest_framework.schemas import get_schema_view
from rest_framework_swagger.renderers import SwaggerUIRenderer, OpenAPIRenderer
schema_view = get_schema_view(title='Users API', renderer_classes=[OpenAPIRenderer, SwaggerUIRenderer])

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include(router.urls)),
    path('api-auth/',include('rest_framework.urls',namespace='rest_framework')),
    path('docs/',schema_view,name='docs'),
]

生成表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python3 manage.py makemigrations
python3 manage.py migrate

创建超级用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python3 manage.py createsuperuser

注意:密码必须符合复杂性要求。

启动项目

直接使用Pycharm启动即可。

三、访问页面

drf自带的接口UI

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1:8000/

效果如下:

Swagger UI

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1:8000/docs/

效果如下:

点击users

点击get-->try it out

点击执行

结果如下:

这里是返回了一条用户表数据,"username": "xiao",就是我新建的超级用户。

点击Authorize

输入新建的超级用户和密码

 登录成功后,效果如下:

本文参考链接:

https://www.jianshu.com/p/c53de96f3ff1

https://blog.csdn.net/sinat_41622641/article/details/81636682

https://blog.csdn.net/the_brave/article/details/106138396

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Django Rest Swagger生成api文档
Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因:
程序员同行者
2018/08/16
3.2K0
Django Rest Swagger生成api文档
Restful接口开发与测试—集成Swagger
接口开发完成了,那么接下来需要编写接口文档。传统的接口文档编写都是使用Word或者其他一些接口文档管理平台,这种形式接口文档维护更新比较麻烦,每次接口有变动时得手动修改文档。因此,针对这种情况,这里推荐使用Swagger来管理接口文档。
清风穆云
2021/08/09
7270
django-rest-framework登陆认证
# -*- coding: utf-8 -*- __author__ = 'YongCong Wu' # @Time : 2018/10/23 15:05 # @Email : : 1922878025@qq.com from rest_framework import exceptions from app import models class FirstAuthtication(object): def authenticate(self, request):
Wyc
2018/11/09
1.3K0
Powered by Django REST Swagger
Powered by Django REST Swagger #1 环境 Python==3.7.6 Django==2.0.7 django-rest-swagger==2.2.0 安装swagger pip install django-rest-swagger #2 使用指南 #2.1 注册app INSTALLED_APPS = [ ... 'rest_framework_swagger', ... ] #2.2 使用 from rest_framework.schemas
Autooooooo
2020/11/09
4340
Powered by Django REST Swagger
Python3+ Django3:自动生成Swagger接口文档
当接口开发完成,紧接着需要编写接口文档。传统的接口文档通常都是使用Word或者一些接口文档管理平台进行编写,但此类接口文档维护更新比较麻烦,每次接口有变更,需要手动修改接口文档。在实际的工作中,经常会遇到:“前端抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新”。为了解决这个问题,业界推出了一个Swagger框架来管理接口文档,实现接口文档的自动更新。
测试开发技术
2020/01/17
16.5K3
Python3+ Django3:自动生成Swagger接口文档
Django REST framework初次使用
我们将使用 django-rest 创建一个简单的API,以允许管理员用户查看和编辑系统中的user和group。
用户4945346
2020/06/16
7670
Restful接口开发与测试—Django安装
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
清风穆云
2021/08/09
1.8K0
Django-REST-Framewo
We're going to create a simple API to allow admin users to view and edit the users and groups in the system.
py3study
2020/01/06
4460
Django_rest框架实践项目(一)入门helloWord项目的创建和代码的解释
在django_venv 虚拟环境里面创建一个helloworld项目,并且创建一个quickstartapp ,也就是再创建一个app。 ,并且连接数据库,现在是连接mysql数据库,将app映射到数据库里面
一写代码就开心
2021/03/02
1.3K0
Django_rest框架实践项目(一)入门helloWord项目的创建和代码的解释
让 API 自动生成文档
程序员最苦恼的事情莫过于写文档。由于业务口径频繁变更,因此很多接口也会频繁变更,频繁变更导致文档的维护是一件相当费时的事情,当优先级更高的事情袭来,更新文档反到成了次要工作,久而久之,文档就算有,也不是最新的,有些接口,干脆文档也不写了,口口相传了事。
somenzz
2020/11/25
1.7K0
让 API 自动生成文档
Django进阶:DRF(Django REST framework)
DRF即Django REST framework的缩写,官网上说:Django REST framework是一个强大而灵活的工具包,用于构建Web API。简单来说:通过DRF创建API后,就可以通过HTTP请求来获取、创建、更新或删除数据(CRUD)。
一只大鸽子
2023/09/02
7810
Django进阶:DRF(Django REST framework)
快用Django REST framework写写API吧
Django默认是前后端绑定的,提供了Template和Form,现在流行前后端分离项目,Python大佬坐不住了,于是便有了Django REST framework:https://github.com/tomchristie
dongfanger
2020/12/18
1.1K0
快用Django REST framework写写API吧
Django REST Framework教程(一分钟入门)
  使用Django Rest Framework之前我们要先知道,它是什么,能干什么用?
全栈测试开发日记
2023/02/02
2.5K0
Django REST Framework教程(一分钟入门)
如何用 Django 编写 Python web API【Programming(Python)】
Django是Python API开发中最受欢迎的框架之一。 在此快速教程中学习如何使用它。
Potato
2019/12/01
2.3K0
如何用 Django 编写 Python web API【Programming(Python)】
Django REST framework 的快速入门教程
创建一个新的Django项目,叫做 tutorial,然后开始一个新的app叫做 quickstart。
菲宇
2019/06/13
1.5K0
体验Django REST framework,解读REST架构风格
写下这篇文章,一方面记录Django REST framework的体验过程,同时借此解读下REST架构风格。
Coder Sam
2018/08/28
4.2K7
体验Django REST framework,解读REST架构风格
Django-REST:001-快速入门Django Restful Framework
rest framework任何配置都是基于全局的REST_FRAMEWORK配置选项,打开你的Django项目配置文件settings.py,添加如下配置
大牧莫邪
2018/08/27
3880
5 分钟,带你快速入门 Django DRF
DRF 框架,全称为 Django Rest Framework,是 Django 内置模块的扩展,用于创建标准化 RESTful API;它利用 ORM 映射数据库,并自定义序列化数据进行返回,多用于前后端分离项目
AirPython
2021/04/20
1.9K0
5 分钟,带你快速入门 Django DRF
Django Rest Framework
https://q1mi.github.io/Django-REST-framework-documentation/
vanguard
2020/07/07
2.4K0
教你 10 分钟构建一套 RESTful API 服务( Django篇 )
前面用了两篇文章,分别用 Java + Spring Boot 和 Python + Flask 在本地构建了一套 RESTful API 服务
AirPython
2020/06/29
6.9K1
相关推荐
Django Rest Swagger生成api文档
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验