Django和Fastapi的区别
定位不同
- 无继承关系🏠二者相互独立,FastAPI 并非 Django 的子项目,也不是基于 Django 改造而来。
- 开发主体不同👤Django 由 Django 软件基金会开发,FastAPI 由 Sebastián Ramírez 开发。
- 核心定位不同⚡
- Django:一站式全栈框架,内置 ORM、后台、认证等全套功能,如同完整别墅。
- FastAPI:专注 API 接口的高性能微服务框架,简洁轻量,如同高性能 API 小公寓。
长的不一样
Django
# serializers.py from rest_framework import serializers class ItemSerializer(serializers.Serializer): """ 这是一个Django REST Framework 序列化类📌,用于数据校验与转换 item_id 必须是整数,必填 q 是字符串,可传可不传 """ item_id = serializers.IntegerField() q = serializers.CharField(required=False) # views.py from rest_framework.decorators import api_view from rest_framework.response import Response @api_view(['GET']) def read_item(request, item_id): """ 只接受GET请求 item_id 从 URL 路径里获取 q 从 URL 后面的参数里获取 """ q = request.GET.get('q') return Response({"item_id": item_id, "q": q}) # urls.py from django.urls import path from . import views urlpatterns = [ path('item/<int:item_id>/', views.read_item), ] ---------------------------- # 访问 http://127.0.0.1:8000/item/123/?q=test 返回 # {"item_id": 123, "q": "test"}Fastapi
from fastapi import FastAPI # 创建应用 app = FastAPI() @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} ------------------------- 运行命令: uvicorn main:app --reload 访问地址示例: http://127.0.0.1:8000/items/666?q=hello 返回结果: {"item_id":666,"q":"hello"}FastAPI 更短、类型提示更强、自带校验、自带文档。
写接口效果不同
Django 写接口
Django 本身不能直接写接口,必须搭配扩展库Django REST Framework(DRF)。
- DRF 核心作用
- 将 Django 模型数据转为 JSON/XML 等接口格式
- 处理请求、参数校验、权限、分页、过滤
- 自动生成接口文档,适配前后端分离
- 代码特点需单独写序列化器(serializer)定义字段,视图层代码相对繁琐。
RESTful API
一套接口设计规范,统一前后端 / 系统交互方式
核心:基于 HTTP,GET 查、POST 增、PUT 改、DELETE 删
特点:地址清晰、无状态、资源导向、易维护
FastAPI 写接口
- 无需额外扩展,原生支持接口开发
- 自带类型提示、参数校验、自动接口文档
- 代码极简,无需单独编写序列化器
总结
| 特点 | Django | FastAPI |
|---|---|---|
| 定位 | 全栈大框架 | API 高性能微框架 |
| 速度 | 中等 | 极快(接近 Go/Node) |
| 自带功能 | ORM、Admin、Auth、模板、表单 | 几乎不带,只做路由 + 校验 |
| 异步 | 支持但弱 | 原生异步,主打高并发 |
| 数据校验 | 手动 / Form | 自动类型校验 + Pydantic |
| API 文档 | 需自己配 drf-swagger | 自动生成 docs/redoc |
| 学习成本 | 高(概念多) | 低(简单直接) |
| 适用场景 | 后台管理、CMS、全栈网站 | 微服务、接口服务、高并发 API |
FastAPI 和 Django 没关系,是竞争对手 / 互补关系
Django 重、全、适合做完整网站 + 后台
FastAPI 轻、快、专做 API,自带文档和类型校验
现在很多公司架构:Django 做后台管理 + FastAPI 做对外接口服务
