Flask 是一个轻量级的 Python 微框架,灵活且适用于从简单的 API 到复杂的 Web 应用程序。它在简单性和强大功能之间取得了良好的平衡,使其成为各个技能水平开发者的最爱。
Flask 的特别之处是什么?
Flask 由 Armin Ronacher 于 2010 年创建,最初是一个愚人节玩笑,后来演变成最受欢迎的 Python Web 框架之一。它的“微”标签并不意味着缺乏功能——相反,它专注于提供一个稳固的核心,并在需要时灵活扩展功能。
主要优势包括:
- 简单性:易于学习和实现
- 灵活性:没有强制特定项目组织的严格结构
- 可扩展性:提供众多扩展以增加额外功能
- 完全控制:开发者友好的设计,不隐藏实现细节
开始使用 Flask
设置一个基本的 Flask 应用程序只需很少的代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
只需将其保存为 app.py
,使用 pip install flask
安装 Flask,然后用 python app.py
运行它。在浏览器中导航到 http://127.0.0.1:5000/
,你将看到 “Hello, World!” 的显示。
Flask 的核心特性
路由
Flask 的路由系统允许你将 URL 映射到特定的函数:
@app.route('/users/<username>')
def show_user_profile(username):
return f'User: {username}'
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'Post ID: {post_id}'
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
return f'Subpath: {subpath}'
模板
Flask 使用 Jinja2 进行模板渲染,允许您将逻辑与表现分离:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/hello/<name>')
def hello(name):
return render_template('hello.html', name=name)
对应的 hello.html
模板如下:
<!DOCTYPE html>
<html>
<head>
<title>Hello Page</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
{% if name == 'admin' %}
<p>Welcome, administrator!</p>
{% else %}
<p>Welcome to our website.</p>
{% endif %}
</body>
</html>
请求处理
Flask 使得访问表单数据、查询参数等变得简单:
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
# Process login
return f'Logged in as {username}'
else:
# Show login form
return '''
<form method="post">
<p>Username: <input type="text" name="username"></p>
<p>Password: <input type="password" name="password"></p>
<p><input type="submit" value="Login"></p>
</form>
'''
使用 Flask 构建真实应用程序
对于较大的应用程序,您需要合理地组织代码。Flask 社区通常推荐基于包的结构方法:
my_flask_app/
├── app/
│ ├── __init__.py # 初始化 Flask 应用
│ ├── routes.py # 应用路由
│ ├── models.py # 数据库模型
│ ├── forms.py # 表单类
│ ├── static/ # CSS、JS、图片
│ └── templates/ # Jinja2 模板
├── config.py # 配置文件
├── requirements.txt # 依赖项
└── run.py # 应用入口
Flask 扩展
一些增强 Flask 功能的热门扩展:
- Flask-SQLAlchemy:用于数据库交互的 ORM
- Flask-WTF:表单处理和验证
- Flask-Login: 用户会话管理
- Flask-RESTful: 构建REST API
- Flask-Migrate: 数据库迁移
何时选择Flask
Flask非常适合:
- 小型到中型项目
- API和微服务
- 原型开发
- 学习网页开发
- 需要定制的项目
如果您需要更多内置功能和结构,Django可能是更好的选择,但Flask的灵活性和简单性使其在许多场景中都非常完美。
结论
Flask之所以继续成为最受欢迎的Python框架之一,原因在于:它为开发者提供了所需的功能,而不施加不必要的限制。无论您是在构建简单的API还是复杂的Web应用程序,Flask都能优雅高效地提供完成工作的工具。
随着您的项目增长,Flask通过其扩展生态系统和社区资源与您共同成长。其简单性、灵活性和强大的组合使其成为2025年及以后Python网页开发的优秀选择。