定制Django REST FrameworkSwagger教程:从零开始到美观文档
91 浏览量
更新于2024-08-31
收藏 163KB PDF 举报
本文将详细介绍如何在Django REST Framework(DRF)项目中自定义Swagger,以便创建更美观、易用的API接口文档。首先,我们将回顾一下环境设置,包括使用的Django版本(1.11.6)、DRF版本(3.7.1)以及与Swagger相关的库,如django-rest-swagger(2.1.2)等。由于3.6版本与3.7版本在Swagger集成上存在一些差异,但核心概念是一致的,本文将以3.7.1为例进行讲解。
步骤一:配置更改
在`settings.py`文件中,确保已将'rest_framework'添加到`INSTALLED_APPS`列表中,以便让Django知道要启用REST框架及其Swagger功能:
```python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
# 添加这一行
'rest_framework',
# 其他应用...
]
```
步骤二:启用Swagger
在`REST_FRAMEWORK`部分,我们需要启用Swagger的文档生成功能,并配置相关参数。例如:
```python
REST_FRAMEWORK = {
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
),
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
),
'DOC_INCLUDE_REQUEST_HEADERS': False, # 隐藏默认的请求头
'SWAGGER_SETTINGS': {
'USE_SESSION_AUTH': False, # 关闭Swagger认证
'SECURITY_DEFINITIONS': {
'api_key': {
'type': 'apiKey',
'name': 'Authorization',
'in': 'header'
}
},
'info': {
'title': 'Your Project API', # API文档标题
'description': 'This is an example of custom Swagger documentation using Django REST Framework.', # 描述文档内容
'version': '1.0.0',
},
'exclude_namespaces': [], # 可选,排除不需要显示的命名空间
}
}
```
在这里,我们设置了`DOC_INCLUDE_REQUEST_HEADERS`为False来隐藏默认请求头,还配置了基本的API安全定义和文档信息。`SECURITY_DEFINITIONS`定义了如何验证API密钥。
步骤三:自定义视图和序列化器
为了提供更具体的自定义描述,你可以重写或扩展`AutoSchema`类,以实现更复杂的参数解析和数据展示。例如,为模型视图添加详细的字段描述:
```python
from rest_framework import serializers, generics
class CustomAutoSchema(AutoSchema):
def get_field_info(self, field):
info = super().get_field_info(field)
if isinstance(field, serializers.ModelSerializer):
for nested_field in field.fields.values():
info['properties'][nested_field.field_name] = self.get_field_info(nested_field)
return info
class YourModelViewSet(generics.ListCreateAPIView):
queryset = YourModel.objects.all()
serializer_class = YourModelSerializer
schema = CustomAutoSchema()
```
这将在Swagger文档中展示出模型字段的详细描述。
步骤四:启动Swagger UI
安装并配置Swagger UI以访问自定义的API文档。在项目的urls.py中添加URL路径,指向Swagger的HTML文件:
```python
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
schema_view = get_schema_view(
openapi.Info(
title="Your Project API",
default_version='v1',
description="API文档",
),
public=True,
permission_classes=[],
)
urlpatterns += [
path('api/docs/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
]
```
现在,当用户访问`/api/docs/`时,他们将看到一个美观且功能完整的Swagger界面,可以查看、测试和操作API。
总结,本文详细介绍了在Django REST Framework中自定义Swagger的过程,包括配置、视图定制和启动Swagger UI。理解这些步骤后,可以根据项目需求进一步个性化和优化文档体验。
2021-02-04 上传
2021-06-22 上传
2021-02-19 上传
2021-03-14 上传
2021-02-21 上传
2019-03-21 上传
2021-03-16 上传
2018-10-19 上传
2021-02-08 上传
weixin_38693192
- 粉丝: 5
- 资源: 934
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜