Django 集成 Swagger
以下是 Django 集成 Swagger 的安裝及配置方法,基于當前主流工具推薦兩種方案(drf-yasg 和 drf-spectacular),請根據項目需求選擇:
方案一:使用 drf-yasg(支持 Swagger 2.0)
1. 安裝依賴
pip install drf-yasg2 # 兼容最新版 Django 和 DRF411
2. 配置 settings.py
INSTALLED_APPS = [
...
'rest_framework',
'drf_yasg',
]
# 可選:Swagger 自定義配置
SWAGGER_SETTINGS = {
'SECURITY_DEFINITIONS': {
'basic': {'type': 'basic'}
},
'JSON_EDITOR': True, # 啟用 JSON 輸入框
'OPERATIONS_SORTER': 'alpha' # 接口按字母排序
}
3. 配置 urls.py
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
schema_view = get_schema_view(
openapi.Info(
title="API Docs",
default_version='v1',
description="接口文檔說明",
),
public=True,
)
urlpatterns = [
...
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0)),
path('redoc/', schema_view.with_ui('redoc', cache_timeout=0)),
]
方案二:使用 drf-spectacular(支持 OpenAPI 3.0)
1. 安裝依賴
pip install drf-spectacular # 推薦新項目使用
2. 配置 settings.py
INSTALLED_APPS = [
...
'rest_framework',
'drf_spectacular',
]
REST_FRAMEWORK = {
'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema'
}
# 自定義 OpenAPI 配置
SPECTACULAR_SETTINGS = {
'TITLE': '項目 API',
'DESCRIPTION': '接口文檔詳細說明',
'VERSION': '1.0.0',
'SERVE_INCLUDE_SCHEMA': False, # 隱藏 Schema 信息
}
3. 配置 urls.py
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
urlpatterns = [
...
path('schema/', SpectacularAPIView.as_view(), name='schema'),
path('swagger/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
]
注意事項
版本兼容性
若使用 django-rest-swagger,需注意該庫已棄用且僅支持舊版 Django/DRF。
drf-yasg2 是 drf-yasg 的維護分支,兼容最新版本。
接口注釋規范
使用 @swagger_auto_schema(drf-yasg)或 @extend_schema(drf-spectacular)裝飾器自定義接口描述。
測試訪問
啟動服務后,通過以下路徑訪問:
Swagger UI:http://localhost:8000/swagger/
Redoc:http://localhost:8000/redoc/
工具對比
| 工具 | 支持的規范 | 特點 |
|---|---|---|
| drf-yasg2 | Swagger 2.0 | 配置簡單,社區資源豐富1 |
| drf-spectacular | OpenAPI 3.0 | 功能更現代,支持分層文檔35 |
根據項目需求選擇合適的工具,新項目推薦使用 drf-spectacular 以獲得更好的擴展性。

浙公網安備 33010602011771號