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方法,所有的认证.权限 ...
随机推荐
- 从dataset表中获取某一列的所有值方法
原文发布时间为:2008-07-31 -- 来源于本人的百度文章 [由搬家工具导入] 可以datarow遍历所有行即可,如下:pubauthor这个表中的au_lname的所有值加到listbox上面 ...
- Aspose.Words使用代码插入表格
Aspose.Words是一款功能强大的word文档处理控件,在不需要安装word的条件下,可进行word的创建,修改,转换等操作. Aspose.Words可以简单使用该产品提供的DocumentB ...
- PHP验证码显示不出来
PHP验证码显示不出来 验证码图片显示不出来,原因一般有三种(网上基本一致这几种原因): (1)php没有安装gd2模块,可以使用phpinfo()函数查看. (2)代码很可能是使用了像editpul ...
- 微信小程序项目结构
- (12)centos之stmp服务器
yum remove sendmail #卸载sendmail
- BZOJ1017魔兽地图DotR 樹形DP
@(BZOJ)[樹形DP, 三維DP] Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA ...
- delphi函数大全
delphi函数大全Abort 函数 引起放弃的意外处理Abs 函数 绝对值函数AddExitProc ...
- android 获得SDCard信息
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- python的分布式队列神器 Celery
pip search kafka可以搜索到很多kafka的python插件,选择一个大家用的比较多的 celery结合kafka使用 使用kafka扩展python logging集中式日志收集 re ...
- 大众车机天宝187A Hack笔记
0×00前言 自从去年买了车,对汽车电子系统的兴趣就上来了.这不,前一阵子逛汽车论坛,发现了有网友将老版本的天宝车机被刷上了2017新帕萨特车机的系统,支持超级蓝牙和苹果CarPlay,百度CarLi ...