Python Web框架概述
Python 主流 Web 框架各有设计理念,适用于不同项目规模。
Flask 轻量框架
Python
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello Flask'
@app.route('/users/<int:id>')
def get_user(id):
return f'User {id}'
@app.route('/api', methods=['POST'])
def api():
data = request.json
return jsonify(data)
if __name__ == '__main__':
app.run(debug=True)
Flask 特点:
- 轻量灵活,核心简单
- 扩展丰富,按需选择
- 学习曲线平缓
- 适合中小项目、API 服务
Django 全功能框架
Python
# Django 项目结构
# myproject/
# manage.py
# myproject/
# settings.py
# urls.py
# myapp/
# models.py
# views.py
# urls.py
# models.py
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
# views.py
from django.shortcuts import render
from .models import User
def user_list(request):
users = User.objects.all()
return render(request, 'users.html', {'users': users})
Django 特点:
- 全功能,开箱即用
- ORM、Admin、认证内置
- MTV 架构清晰
- 适合大型项目、企业应用
FastAPI 现代框架
Python
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int
@app.get('/')
def home():
return {'message': 'Hello FastAPI'}
@app.post('/users')
def create_user(user: User):
return user
@app.get('/items/{item_id}')
def get_item(item_id: int, q: str = None):
return {'item_id': item_id, 'q': q}
FastAPI 特点:
- 异步高性能
- 自动 API 文档
- 类型注解验证
- 适合 API 服务、微服务
框架对比
| 特性 | Flask | Django | FastAPI |
|---|---|---|---|
| 类型 | 轻量 | 全功能 | 现代 |
| 架构 | 灵活 | MTV | ASGI |
| ORM | 可选 | 内置 | 可选 |
| Admin | 无 | 内置 | 无 |
| 异步 | 支持 | 支持 | 核心 |
| 文档 | 手动 | 手动 | 自动 |
| 学习难度 | 低 | 中 | 低 |
Flask 扩展生态
Python
# 常用 Flask 扩展
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from flask_restful import Api
from flask_migrate import Migrate
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
login_manager = LoginManager(app)
api = Api(app)
migrate = Migrate(app, db)
Django 内置功能
Python
# Django 内置组件
# - ORM:数据库操作
# - Admin:后台管理
# - Auth:用户认证
# - Forms:表单处理
# - Middleware:中间件
# - Templates:模板引擎
# - Cache:缓存系统
# - Email:邮件发送
# - REST framework:API 扩展
FastAPI 性能特点
Python
# FastAPI 性能优势
# - Starlette ASGI 框架
# - Pydantic 数据验证
# - 自动 OpenAPI 文档
# - 异步 IO 支持
# - 类型检查
# - WebSocket 支持
import uvicorn
# 运行 FastAPI
uvicorn.run(app, host='0.0.0.0', port=8000)
选择建议
| 场景 | 推荐框架 |
|---|---|
| 小项目/API | Flask |
| 学习入门 | Flask |
| 企业应用 | Django |
| 全功能后台 | Django |
| 高性能 API | FastAPI |
| 微服务 | FastAPI |
| 异步需求 | FastAPI |
框架启动方式
Python
# Flask
app.run(host='0.0.0.0', port=5000, debug=True)
# Django
# python manage.py runserver 0:8000
# FastAPI
# uvicorn main:app --reload --host 0.0.0.0 --port 8000
路由定义对比
Python
# Flask 装饰器路由
@app.route('/users/<int:id>')
def get_user(id):
pass
# Django URL 配置
# urls.py
urlpatterns = [
path('users/<int:id>/', views.get_user),
]
# FastAPI 函数路由
@app.get('/users/{id}')
def get_user(id: int):
pass
要点总结
- Flask 轻量灵活,扩展丰富,适合中小项目
- Django 全功能,内置 ORM/Admin/Auth,适合企业应用
- FastAPI 异步高性能,自动文档,适合 API 和微服务
- Flask 学习曲线最低,适合入门
- Django 开箱即用,适合快速开发大型应用
- FastAPI 性能最好,适合高并发场景
- 根据项目规模、功能需求、性能要求选择框架
- 三大框架代表了 Python Web 开发的主要方向
📝 发现内容有误?点击此处直接编辑