django rest_framework swagger使用案例
环境准备
环境要求:
python3
django2
pip3
模块安装:
pip3 install django-rest-framework
pip3 install django-rest-swagger
搭建项目:
搭建django项目,创建testapi app
参数配置
setting.py:
INSTALLED_APPS中添加:rest_framework,rest_framework_swagger

视图编辑
编辑views.py
# Create your views here.
# -*- coding: utf-8 -*- from rest_framework.views import APIView from rest_framework.permissions import AllowAny
from rest_framework.schemas import SchemaGenerator
from rest_framework.schemas.generators import LinkNode, insert_into
from rest_framework.renderers import *
from rest_framework_swagger import renderers
from rest_framework.response import Response # from rest_framework.schemas import SchemaGenerator
class MySchemaGenerator(SchemaGenerator): def get_links(self, request=None):
# from rest_framework.schemas.generators import LinkNode,
links = LinkNode() paths = []
view_endpoints = []
for path, method, callback in self.endpoints:
view = self.create_view(callback, method, request)
path = self.coerce_path(path, method, view)
paths.append(path)
view_endpoints.append((path, method, view)) # Only generate the path prefix for paths that will be included
if not paths:
return None
prefix = self.determine_path_prefix(paths) for path, method, view in view_endpoints:
if not self.has_view_permissions(path, method, view):
continue
link = view.schema.get_link(path, method, base_url=self.url)
# 添加下面这一行方便在views编写过程中自定义参数.
link._fields += self.get_core_fields(view) subpath = path[len(prefix):]
keys = self.get_keys(subpath, method, view) # from rest_framework.schemas.generators import LinkNode, insert_into
insert_into(links, keys, link) return links # 从类中取出我们自定义的参数, 交给swagger 以生成接口文档.
def get_core_fields(self, view):
return getattr(view, 'coreapi_fields', ()) def DocParam(name="default", location="query", required=True, description=None, type="string", *args, **kwargs):
return coreapi.Field(name=name, location=location, required=required, description=description, type=type) class ReturnJson(APIView):
coreapi_fields = ( #用于swagger doc显示方法必须字符串
DocParam("name", description='test'),
DocParam("nalanxiao", required=False, description='rohero'),
)
def get(self, request, *args, **kwargs):
json_data = {'name': 'post', 'id': 0}
return Response(json_data) def post(self, request, *args, **kwargs):
json_data = {'name': 'post', 'id': 0}
return Response(json_data)
路由设置
编辑urls.py
from django.conf.urls import url
from .views import SwaggerSchemaView, ReturnJson, StudentsApiView urlpatterns = [
url(r'^api/$', ReturnJson.as_view(), name='api'),
url(r'^api/v1/$', StudentsApiView.as_view(), name='api_v1'),
url(r'^docs/', SwaggerSchemaView.as_view(), name='apiDocs'),
]
效果展示:


github:
https://github.com/Roherolxh/opstest
觉得有帮助望给个小星星
django rest_framework swagger使用案例的更多相关文章
- Django Rest Swagger生成api文档
关于swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. Sw ...
- Django使用swagger生成接口文档
参考博客:Django接入Swagger,生成Swagger接口文档-操作解析 Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.总体目标是使客户端和文 ...
- Django rest_framework 实用技巧
前言: 最近工作中需要用到Django rest_framework框架做API, 边学边写,记录了一些实际工作中需要用到的功能,不是很全也不系统,以后需要什么功能可以在这查询. 后续还会更新其它的用 ...
- Python之Django rest_Framework框架源码分析
#!/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_fram ...
- Python之Django rest_Framework(2)
实例化: v1 = ["view.xxx.path.Role","view.xxx.path.Group",] 可以循环,循环出来的每一个不能实例化 如果把v1 ...
- 七、django rest_framework源码之视图
1 绪言 当大家看大这篇博文的时候,应该对Django rest_framework中的CBV有所了解了,大致来说就是通过定义类来继承APIView类,并在类中定义get.post.put.delet ...
- 五、django rest_framework源码之版本控制剖析
1 绪论 Djangorest_framework的版本控制允许用户更改不同客户端之间的行为,且提供了许多不同的版本控制方案.版本控制由传入的客户端请求确定,可以基于请求URL,也可以基于请求标头. ...
- 四、django rest_framework源码之频率控制剖析
1 绪言 权限判定之后的下一个环节是访问频率控制,本篇我们分析访问频率控制部分源码. 2 源码分析 访问频率控制在dispatch方法中的initial方法调用check_throttles方法开始. ...
- 二、django rest_framework源码之认证流程剖析
1 绪言 上一篇中讲了django rest_framework总体流程,整个流程中最关键的一步就是执行dispatch方法.在dispatch方法中,在调用了一个initial方法,所有的认证.权限 ...
随机推荐
- VS的一些错误解决方法记录
1.errorC2664 "bool CMarkup::AddElem(MCD_CSTR,MCD_CSTR,int)":不能将参数1从“constchar [7]” 转换位&quo ...
- uva 10870 递推关系矩阵快速幂模
Recurrences Input: standard input Output: standard output Consider recurrent functions of the follow ...
- ElasticSearch API 之 GET
GET API是Elasticsearch中常用的操作,一般用于验证文档是否存在:或者执行CURD中的文档查询.与检索不同的是,GET查询是实时查询,可以实时查询到索引结果.而检索则是需要经过处理才能 ...
- COdevs 2823 锁妖塔
2823 锁妖塔 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 琐妖塔会在一会儿后倒塌.大量妖魔涌出塔去,塔内的楼梯都挤满了人(哦 ...
- mongodb的入门学习
mongodb的入门学习 简介: MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...
- WEB学习-HTML的骨架
HTML的标准骨架 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...
- 2018.11.6 PION 模拟赛
期望:100 + 40 + 50 = 190 实际:60 + 10 + 50 = 120 考得好炸啊!!T1数组开小了炸掉40,T2用 int 读入 long long ,int存储 long lon ...
- ASP.NET Core默认注入方式下如何注入多个实现(多种方式) - sky 胡萝卜星星 - CSDN博客
原文:ASP.NET Core默认注入方式下如何注入多个实现(多种方式) - sky 胡萝卜星星 - CSDN博客 版权声明:本文为starfd原创文章,转载请标明出处. https://blog.c ...
- 【Todo】ES6学习
今天部分分享,有一篇PPT,放在这里了 /Users/baidu/Documents/Data/Work/分享资料/ES6大法好.pptx 内容挺丰富的,可以学习.
- 使用azure send grid发送email
1. create a send grid account 2. remember the username/password of the send grid account watermark/2 ...