drf 生成接口文档
CoreAPI是基于djangorestframework框架下的自动文档生成器,只要按DRF规则写的路由,CoreAPI就可以自动生成接口文档。
下载:
pip install coreapi
配置:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app', # django原生接口
'coreapi', # 生成接口文档
'rest_framework',
]
REST_FRAMEWORK = {
......
# 接口文档生成
'DEFAULT_SCHEMA_CLASS':'rest_framework.schemas.AutoSchema',
}
路由:
from django.contrib import admin
from django.urls import path,include
from rest_framework.documentation import include_docs_urls
urlpatterns = [
path('admin/', admin.site.urls),
path('student/',include('app01.urls')),
path('docs/', include_docs_urls(title="drf教程api接口文档")),
]
访问接口文档
GET 127.0.0.1:8000/docs/
yasg的 使用
安装
pip install drf-yasg
配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app', # django原生接口
'coreapi', # 生成接口文档
'rest_framework',
'drf_yasg',
]
路由
# yasg的视图配置类,用于生成api
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
schema_view = get_schema_view(
openapi.Info(
title="drf教程api文档", # 必须
default_version="v1.0.0", # 必须
description="drf学习时写的案例,现在生成一个接口文档",
terms_of_service='',
license=openapi.License(name="BANA"),
),
public=True, # 所有人访问
permission_classes=[rest_framework.permissions.AllowAny], # 权限类,和上面的互斥
)
urlpatterns = [
path('admin/', admin.site.urls),
path('student/',include('app01.urls')),
path('docs/', include_docs_urls(title="drf教程api接口文档")),
path('doc/', schema_view.with_ui("swagger", cache_timeout=0), name="schema-swagger"), # swagger
]
视图:
from django.shortcuts import render,HttpResponse
from rest_framework.mixins import ListModelMixin,CreateModelMixin,\
RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin
from rest_framework.viewsets import GenericViewSet
from .models import Student
from .serializers import studentSerializer
# Create your views here.
# 列表
class IndexView(ListModelMixin,GenericViewSet,RetrieveModelMixin):
queryset = Student.objects.all()
serializer_class = studentSerializer
# 添加
class CreateView(CreateModelMixin,GenericViewSet):
queryset = Student.objects.all()
serializer_class = studentSerializer
# # 查询一个
# class OneView(RetrieveModelMixin,GenericViewSet):
# queryset = Student.objects.all()
#
# serializer_class = studentSerializer
# 删除一个
class DeleteView(GenericViewSet,DestroyModelMixin):
queryset = Student.objects.all()
serializer_class = studentSerializer
# 修改
class PutView(UpdateModelMixin,GenericViewSet):
queryset = Student.objects.all()
serializer_class = studentSerializer