郴州微网站建设东营建网站
1. Flask 是什么?
Flask 是一个 微框架(Microframework),特点包括:
- 轻量灵活:核心仅包含路由和模板引擎,其他功能通过扩展实现
 - 易于学习:代码直观,适合快速开发小型应用和 API
 - 高度可定制:不强制项目结构,可自由选择组件
 
2. 核心组件
(1) 最小应用示例
from flask import Flask
app = Flask(__name__)@app.route('/')
def hello():return "Hello World!"if __name__ == '__main__':app.run(debug=True) 
- 路由:
@app.route()装饰器定义 URL - 开发服务器:
app.run()启动调试模式 
(2) 路由与变量规则
@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 ID: {post_id}' 
- 转换器:
<int:var>、<float:var>、<path:var> 
(3) 请求与响应
from flask import request, jsonify@app.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'POST':return jsonify({'status': 'success'})else:return render_template('login.html') 
- 请求对象:
request.args(GET)、request.form(POST) - 响应对象:
jsonify()返回 JSON 
(4) 模板渲染 (Jinja2)
from flask import render_template@app.route('/hello/<name>')
def hello(name):return render_template('hello.html', name=name) 
<!-- templates/hello.html -->
<h1>Hello {{ name }}!</h1> 
- 自动转义:防 XSS 攻击
 - 继承机制:
 
{% extends "base.html" %}
{% block content %}...{% endblock %} 
3. 关键扩展
| 扩展名 | 用途 | 安装命令 | 
|---|---|---|
| Flask-SQLAlchemy | ORM 支持 | pip install flask-sqlalchemy | 
| Flask-WTF | 表单处理 | pip install flask-wtf | 
| Flask-Login | 用户认证 | pip install flask-login | 
| Flask-RESTful | 构建 REST API | pip install flask-restful | 
数据库示例 (SQLAlchemy)
from flask_sqlalchemy import SQLAlchemyapp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True)@app.route('/add_user')
def add_user():user = User(username='admin')db.session.add(user)db.session.commit()return "User added!" 
4. 项目结构(推荐)
myflaskapp/
├── app/
│   ├── templates/      # HTML 模板
│   ├── static/         # CSS/JS/图片
│   ├── __init__.py     # 工厂模式初始化
│   ├── models.py       # 数据模型
│   ├── routes.py       # 视图路由
│   └── forms.py        # 表单定义
├── config.py           # 配置文件
└── requirements.txt    # 依赖列表 
5. Flask vs Django
| 特性 | Flask | Django | 
|---|---|---|
| 定位 | 微框架(灵活轻量) | 全栈框架(功能齐全) | 
| 学习曲线 | 简单 | 较陡峭 | 
| ORM | 需扩展(SQLAlchemy) | 自带(Django ORM) | 
| Admin 后台 | 需扩展(Flask-Admin) | 自带 | 
| 适用场景 | API/微服务/快速原型 | 企业级应用/内容管理系统 | 
| 项目结构 | 自由定义 | 强制约定 | 
6. 快速启动
# 安装
pip install flask# 最小应用 (app.py)
from flask import Flask
app = Flask(__name__)@app.route('/')
def home():return "Hello Flask!"if __name__ == '__main__':app.run(debug=True)# 运行
python app.py 
访问 http://localhost:5000
7. 最佳实践
- 工厂模式:延迟创建应用实例
 
# app/__init__.py
def create_app(config):app = Flask(__name__)app.config.from_object(config)return app 
蓝图(Blueprint):模块化路由
from flask import Blueprint
auth = Blueprint('auth', __name__)@auth.route('/login')
def login(): ... 
环境配置:
# config.py
class Config:SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard-to-guess'SQLALCHEMY_TRACK_MODIFICATIONS = False 
- 生产部署: 
- WSGI 服务器:Gunicorn + Nginx
 - 静态文件:
flask collectstatic 
 
8. 常见扩展推荐
- 数据库:Flask-SQLAlchemy, Flask-Migrate
 - 表单:Flask-WTF
 - 认证:Flask-Login, Flask-JWT
 - API:Flask-RESTful, Flask-APIs
 - 后台:Flask-Admin
 - 测试:pytest-flask
 
Flask 的哲学是 "微核+扩展",适合希望从底层构建应用的开发者。建议从官方快速入门(https://flask.palletsprojects.com/)开始实践!
