Django 的文档接口

是的,Django 也有类似的自动生成文档的工具,但需要安装第三方库。主要有以下几个流行的解决方案:

1. Django REST Framework (DRF) 的自动文档(最常用)

安装和配置

bash 复制代码
pip install djangorestframework

settings.py 配置

python 复制代码
INSTALLED_APPS = [
    # ...
    'rest_framework',
    'rest_framework_swagger',  # 或者使用 drf-yasg
]

REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
}

访问地址

复制代码
http://127.0.0.1:8000/swagger/

复制代码
http://127.0.0.1:8000/docs/

2. drf-yasg(推荐,功能更强大)

安装

bash 复制代码
pip install drf-yasg

配置 urls.py

python 复制代码
from django.urls import path, include
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi

schema_view = get_schema_view(
    openapi.Info(
        title="API 文档",
        default_version='v1',
        description="API 描述",
        terms_of_service="https://www.google.com/policies/terms/",
        contact=openapi.Contact(email="contact@yourapi.local"),
        license=openapi.License(name="BSD License"),
    ),
    public=True,
    permission_classes=(permissions.AllowAny,),
)

urlpatterns = [
    # ... 其他路由
    path('swagger<format>/', schema_view.without_ui(cache_timeout=0), name='schema-json'),
    path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
]

访问地址

复制代码
# Swagger UI (交互式)
http://127.0.0.1:8000/swagger/

# ReDoc (静态文档)
http://127.0.0.1:8000/redoc/

# 原始 OpenAPI JSON
http://127.0.0.1:8000/swagger.json

3. Django Ninja(类似 FastAPI 的现代方案)

安装

bash 复制代码
pip install django-ninja

使用示例

python 复制代码
from ninja import NinjaAPI

api = NinjaAPI()

@api.get("/hello")
def hello(request):
    return {"message": "Hello World"}

@api.post("/items")
def create_item(request, name: str, price: float):
    return {"name": name, "price": price}

@api.put("/items/{item_id}")
def update_item(request, item_id: int, name: str):
    return {"item_id": item_id, "name": name}

@api.delete("/items/{item_id}")
def delete_item(request, item_id: int):
    return {"deleted": item_id}

访问地址

复制代码
http://127.0.0.1:8000/api/docs

4. 核心 Django 的 Schema 生成(基础功能)

Django 3.0+ 自带基础的 schema 生成:

配置 urls.py

python 复制代码
from django.urls import path, include
from rest_framework.documentation import include_docs_urls

urlpatterns = [
    # ...
    path('docs/', include_docs_urls(title='API 文档')),
]

访问地址

复制代码
http://127.0.0.1:8000/docs/

完整示例(使用 drf-yasg)

视图示例

python 复制代码
# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status

class UserAPI(APIView):
    def get(self, request):
        """获取用户列表"""
        return Response([{"id": 1, "name": "John"}])
    
    def post(self, request):
        """创建新用户"""
        data = request.data
        return Response({"id": 2, "name": data.get('name')}, status=status.HTTP_201_CREATED)
    
    def put(self, request, user_id):
        """更新用户"""
        data = request.data
        return Response({"id": user_id, "name": data.get('name')})
    
    def delete(self, request, user_id):
        """删除用户"""
        return Response(status=status.HTTP_204_NO_CONTENT)

序列化器

python 复制代码
# serializers.py
from rest_framework import serializers

class UserSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=100)
    email = serializers.EmailField()

推荐方案

对于新项目 :推荐使用 Django Ninja,语法类似 FastAPI,文档生成功能强大。

对于现有 DRF 项目 :推荐使用 drf-yasg,功能最完善。

访问方式

  • 启动 Django 开发服务器:python manage.py runserver
  • 访问对应的文档地址(如 http://127.0.0.1:8000/swagger/

这些工具都会自动包含所有的 HTTP 方法(GET、POST、PUT、DELETE、PATCH 等),并提供交互式测试功能。

相关推荐
-To be number.wan几秒前
Python爬取百度指数保姆级教程
爬虫·python
hnxaoli11 分钟前
win10小程序(十八)剪切板循环粘贴
python·小程序
APIshop13 分钟前
Java获取淘宝商品价格、图片与视频:淘宝开放平台API实战指南
开发语言·python
唐叔在学习28 分钟前
Python移动端应用消息提醒开发实践
开发语言·python
好家伙VCC28 分钟前
**发散创新:基于Python与OpenCV的视频流帧级分析实战**在当前人工智能与计算机视觉飞速发展的背景下
java·人工智能·python·计算机视觉
xiaotao13129 分钟前
阶段零:IDE选择 与 Jupyter Notebook / Lab 使用
ide·人工智能·python·jupyter
Pocker_Spades_A35 分钟前
Python快速入门专业版(五十七)——POST请求与模拟登录:从表单分析到实战(以测试网站为例)
开发语言·python
Highcharts.js38 分钟前
企业级数据可视化|BI 仪表板数据中台工业监控平台的选择分析
人工智能·python·信息可视化·数据挖掘·数据分析·highcharts
橙露43 分钟前
Seaborn 高级可视化:统计图表制作与报告导出
python
2601_954434551 小时前
2026年专业深度测评:入门电钢琴品牌排名前五权威发布
大数据·人工智能·python