django-rest-frameworkdjango-rest-framework开发rest framework api

Django Rest Swagger生成api文档

2019-07-20  本文已影响5人  杰伊_约翰

他来了,他来了,,,

可能你正在为写接口文档而发愁,,,

啊啊啊啊,,,到底该怎么办呢?

那么今天跟大家来说一下关于接口文档的事情
django有一个自带的rest swagger ,这个模块可以帮助你生成接口文档,或者你可以将你需要的内容拿出来。

接下来具体介绍该怎么用它,很简单,跟着步骤配置就好

环境

Python3.6
Django1.11
django-rest-swagger
djangorestframework

安装

pip install django==1.11.6
pip instal djangorestframework
pip install django-rest-swagger

如果你已经有创建完成的项目,那么只需要添加上本文的配置,否则你需要新建

startproject projectname
startapp appname

项目目录/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'store',    # 这里写你自己的app名字
    'rest_framework', 
    'rest_framework_swagger',  # 接口文档模块
]


# 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,
}

序列化 store/serializer.py

我这里是store,你需要创建在自己的app下,下面的原封不动的复制到serializer.py文件中。

# 序列化 接口文档
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__"

配置视图函数文件

# 接口文档视图
from store.serializers import UserSerializer,GroupSerializer
#这里的目录一定得是你自己的app下

#下面的只管复制就可以啦!
from  django.contrib.auth.models import User,Group

from rest_framework import viewsets

class UserViewSet(viewsets.ModelViewSet):
    '''查看,编辑用户的界面'''
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer

class GroupViewSet(viewsets.ModelViewSet):
    '''查看,编辑组的界面'''
    queryset = Group
    serializer_class = GroupSerializer

配置urls.py 文件

from django.conf.urls import url, include
from django.contrib import admin
from store.views import UserViewSet, GroupViewSet
from rest_framework import routers

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])

#自动路由匹配
router = routers.DefaultRouter()
router.register(r'users', UserViewSet, base_name='user')
router.register(r'groups', GroupViewSet, base_name='group')

urlpatterns = [
    # swagger接口文档路由
    url(r'^docs/', schema_view, name="docs"),
    url(r'^admin/', admin.site.urls),
    url(r'^', include(router.urls)),
    # drf登录
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),

]

说了这么多,最后上效果图
浏览器里输入网址


image.png image.png
上一篇下一篇

猜你喜欢

热点阅读