1. 创始时间与作者
2. 官方资源
GitHub 地址:https://github.com/pallets/flask
PyPI 地址:https://pypi.org/project/Flask/
官方文档:https://flask.palletsprojects.com
官方网站:https://palletsprojects.com/p/flask/
社区论坛:https://discuss.palletsprojects.com
快速入门:https://flask.palletsprojects.com/en/latest/quickstart/
https://flask.palletsprojects.com/zh-cn/stable/quickstart/
3. 核心功能
4. 应用场景
1. RESTful API开发
from flask import Flask, jsonifyapp = Flask(__name__)@app.route('/api/users')def get_users():users = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]return jsonify(users)@app.route('/api/users/<int:user_id>', methods=['GET'])def get_user(user_id):user = {'id': user_id, 'name': 'Charlie'}return jsonify(user)if __name__ == '__main__':app.run(debug=True)2. 动态网页渲染
from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')def home():return render_template('index.html', title='首页')@app.route('/user/<username>')def user_profile(username):return render_template('profile.html', user=username)# templates/index.html"""<!DOCTYPE html><html><head><title>{{ title }}</title></head><body> <h1>欢迎来到{{ title }}</h1></body></html>"""3. 表单处理
from flask import Flask, render_template, requestfrom flask_wtf import FlaskFormfrom wtforms import StringField, SubmitFieldapp = Flask(__name__)app.config['SECRET_KEY'] = 'your_secret_key'class ContactForm(FlaskForm):name = StringField('姓名')email = StringField('邮箱')submit = SubmitField('提交')@app.route('/contact', methods=['GET', 'POST'])def contact():form = ContactForm()if form.validate_on_submit():# 处理表单数据return f"感谢 {form.name.data} 提交信息!"return render_template('contact.html', form=form)4. 文件上传服务
from flask import Flask, request, redirect, url_forfrom werkzeug.utils import secure_filenameapp = Flask(__name__)@app.route('/upload', methods=['GET', 'POST'])def upload_file():if request.method == 'POST':file = request.files['file']if file:filename = secure_filename(file.filename)file.save(f'uploads/{filename}')return '文件上传成功!'return ''' <!doctype html> <title>上传文件</title> <form method=post enctype=multipart/form-data> <input type=file name=file> <input type=submit value=上传> </form> '''
5. 底层逻辑与技术原理
核心架构
关键技术
WSGI接口:
上下文机制:
路由系统:
基于Werkzeug的路由实现
URL变量捕获
HTTP方法处理
扩展机制:
模块化设计
官方扩展库(Flask-Ext)
社区扩展生态系统
6. 安装与配置
基础安装
pip install flask==3.0.0
可选扩展
# 数据库支持pip install flask-sqlalchemy# 表单处理pip install flask-wtf# 用户认证pip install flask-login# REST API支持pip install flask-restful
环境要求
| 组件 | 最低要求 | 推荐配置 |
|---|
| Python | 3.7+ | 3.10+ |
| Werkzeug | 2.0+ | 3.0+ |
| Jinja2 | 3.0+ | 3.1+ |
| 操作系统 | 任意 | Linux/macOS |
项目结构
/myflaskapp /app /templates index.html /static style.css __init__.py views.py models.py config.py requirements.txt run.py
7. 高级功能
1. 蓝图(Blueprints)模块化
# app/main/__init__.pyfrom flask import Blueprintmain_bp = Blueprint('main', __name__)@main_bp.route('/')def index():return "首页"# app/admin/__init__.pyfrom flask import Blueprintadmin_bp = Blueprint('admin', __name__, url_prefix='/admin')@admin_bp.route('/')def admin_home():return "管理后台"# app/__init__.pyfrom flask import Flaskfrom .main import main_bpfrom .admin import admin_bpdef create_app():app = Flask(__name__)app.register_blueprint(main_bp)app.register_blueprint(admin_bp)return app2. RESTful API开发
from flask import Flaskfrom flask_restful import Api, Resourceapp = Flask(__name__)api = Api(app)class UserAPI(Resource):def get(self, user_id):return {'user': user_id}def put(self, user_id):return {'status': 'updated'}def delete(self, user_id):return {'status': 'deleted'}api.add_resource(UserAPI, '/users/<int:user_id>')3. 数据库集成
from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'db = SQLAlchemy(app)class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)def __repr__(self):return f'<User {self.username}>'# 创建数据库with app.app_context():db.create_all()4. 用户认证
from flask import Flaskfrom flask_login import LoginManager, UserMixin, login_user, login_requiredapp = Flask(__name__)app.secret_key = 'super_secret_key'login_manager = LoginManager(app)class User(UserMixin):def __init__(self, id):self.id = id@login_manager.user_loaderdef load_user(user_id):return User(user_id)@app.route('/login')def login():user = User(1)login_user(user)return '已登录'@app.route('/protected')@login_requireddef protected():return '受保护内容'
8. 企业级应用案例
社交媒体:
Pinterest后端服务(早期版本)
LinkedIn内部工具
云服务:
Netflix内容分发网络控制台
AWS管理控制台组件
物联网:
Siemens设备监控面板
Bosch智能家居控制接口
金融科技:
教育平台:
总结
Flask 是Python轻量级Web开发的首选框架,核心价值在于:
简洁灵活:微内核设计,只提供核心功能
高度可扩展:通过扩展支持各种高级功能
开发高效:极简API设计,快速上手
社区强大:丰富的扩展生态系统
技术亮点:
优雅的路由系统
强大的Jinja2模板引擎
灵活的上下文管理
完善的测试支持
适用场景:
RESTful API开发
微服务架构
快速原型开发
中小型Web应用
教育和技术演示
安装使用:
pip install flask
最小应用:
from flask import Flaskapp = Flask(__name__)@app.route('/')def hello():return'Hello, World!'if __name__ == '__main__':app.run()学习资源:
官方教程:https://flask.palletsprojects.com/en/latest/tutorial/
经典书籍:《Flask Web开发实战》by 李辉
视频课程:https://www.youtube.com/watch?v=Z1RJmh_OqeA
项目示例:https://github.com/pallets/flask/tree/main/examples
截至2023年,Flask在GitHub收获 64k+ Star,PyPI月下载量超 2000万次,是Python Web开发领域最流行的框架之一。项目遵循 BSD-3-Clause 开源协议,被全球数百万开发者使用。