Flask 是什么?
Flask 是一个轻量级的 Python Web 应用框架,基于 Werkzeug WSGI 工具包 和 Jinja2 模板引擎 构建。它被设计为简单易用、灵活可扩展。
主要特点
1. 轻量级和简洁
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
只需几行代码就能创建一个 Web 应用!
2. 灵活和可扩展
Flask 本身是"微型"框架,核心功能简单,但可以通过扩展添加功能:
-
Flask-SQLAlchemy:数据库 ORM
-
Flask-Login:用户认证
-
Flask-WTF:表单处理
-
Flask-RESTful:构建 REST API
3. 内置开发服务器和调试器
app.run(debug=True, host='0.0.0.0', port=5000)
内置服务器方便开发调试。
核心组件
1. 路由系统
@app.route('/user/<username>')
def show_user(username):
return f'User: {username}'
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'Post: {post_id}'
支持变量规则和类型转换。
2. 请求和响应处理
from flask import request, jsonify, make_response
@app.route('/api/data', methods=['POST'])
def receive_data():
data = request.json # 获取 JSON 数据
name = request.form.get('name') # 获取表单数据
# 返回 JSON 响应
return jsonify({'status': 'success', 'data': data})
# 自定义响应
@app.route('/custom')
def custom_response():
response = make_response('Custom Response')
response.headers['X-Custom-Header'] = 'Value'
return response
3. 会话和 Cookies
from flask import session, redirect, url_for
app.secret_key = 'your-secret-key' # 必须设置密钥
@app.route('/login', methods=['POST'])
def login():
session['username'] = request.form['username']
return redirect(url_for('dashboard'))
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('index'))
项目结构示例

Flask主要文件:
python
from flask import Flask
from exts import db
import os
from flask_jwt_extended import JWTManager
from config import DevelopmentConfig
from flask_cors import *
base_dir=os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
CORS(app,supports_credentials=True,resources="/*")
app.config.from_object(DevelopmentConfig)
db.init_app(app)
jwt=JWTManager(app)
from apps.views.goods import goods_bp
from apps.views.cates import cates_bp
from apps.views.members import member_bp
from apps.views.basic import basic_bp
from apps.views.orders import order_bp
app.register_blueprint(goods_bp, url_prefix='/goods')
app.register_blueprint(cates_bp, url_prefix='/cates')
app.register_blueprint(member_bp, url_prefix='/members')
app.register_blueprint(basic_bp, url_prefix='/')
app.register_blueprint(order_bp, url_prefix='/orders')
config.py为数据库配置文件,数据库默认采用mysql,exts.py采用模块化单例形式导入SQLAlchemy:
python
from flask_sqlalchemy import SQLAlchemy
# from apps import app
from config import DevelopmentConfig
# app.config.from_object(DevelopmentConfig)
# app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+os.path.join(base_dir,'data1.sqlite')
# app.config["SQLALCHEMY_TRACK_MODIFICATIONS"]=False
db=SQLAlchemy()
Flask 扩展推荐
| 扩展 | 用途 |
|---|---|
| Flask-SQLAlchemy | 数据库 ORM |
| Flask-Migrate | 数据库迁移 |
| Flask-Login | 用户会话管理 |
| Flask-WTF | 表单处理和安全 |
| Flask-Mail | 电子邮件支持 |
| Flask-RESTful | REST API 构建 |
| Flask-CORS | 跨域资源共享 |
适用场景
-
RESTful API 开发
-
微服务架构
-
原型快速开发
-
小型到中型 Web 应用
-
教育项目和学习
优点
✅ 简单易学,入门门槛低
✅ 灵活,不强制项目结构
✅ 文档完善,社区活跃
✅ 易于测试和调试
✅ 丰富的扩展生态系统
缺点
⚠️ 对于大型项目需要更多架构设计
⚠️ 部分高级功能需要额外扩展
⚠️ 默认不包含数据库 ORM、表单验证等
