定制Django REST FrameworkSwagger教程:从零开始到美观文档
121 浏览量
更新于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
最新资源
- 拖船:用于与DigitalOcean小滴进行交互的命令行工具
- 后端电影e系列
- AndroidEasyUtils:AndroidEasyUtils是一个简单的android库,其中包含一些utils方法,在任何android项目中工作时都需要使用该方法。 类别是-验证器,对话框,进度对话框,连接性,日期时间,位图,HashMap等
- 集成式计划任务动态调度框架.zip
- cpp代码-(动态存储)设n阶矩阵,输入n*n个元素,并输出指定的第k行
- phaser3-tilemap-pack:具有Webpack,Tilemap和Asset Pack的Phaser 3项目模板
- FreeAgency:代码,数据和分析,可在合同签订后的时间范围内跟踪NBA自由球员的表现
- ToGather:ToGather Web应用程序
- O2O-数据集
- php-docs-vagrant:用于构建docs.php.net并为之贡献的Vagrant存储库
- AntiDebug:PoC
- c代码-随机数排序
- 深圳:用于构建和分发iOS应用程序的CLI(.ipa文件)
- storage-lid:端到端自动化,使用Azure App Service和Azure AD通过一个宁静的api演示对存储帐户的访问
- login_bloc:关于如何使用BLOC模式来管理用户身份验证的Flutter示例
- cpp代码-(字符串)对text的插入与删除