Flask 入门教程
FreeGuideOnline
最新
2026-07-15
文件上传
表单设置 enctype="multipart/form-data",视图函数使用 request.files:
@app.route('/upload', methods=['POST'])
def upload():
file = request.files['file']
if file:
file.save('uploads/' + file.filename)
return '上传成功'
Flask 配置管理
应用经常需要不同环境下的配置(如数据库地址、密钥)。Flask 通过 app.config 管理配置。
从对象加载配置
创建 config.py:
class Config:
SECRET_KEY = 'dev-secret-key'
DEBUG = True
在 app.py 中:
app.config.from_object('config.Config')
然后可以通过 app.config['SECRET_KEY'] 访问。
其他加载方式
- 从
py文件:app.config.from_pyfile('settings.py') - 从环境变量:
app.config.from_envvar('FLASK_SETTINGS')
数据库集成:Flask-SQLAlchemy
虽然 Flask 不强制使用特定 ORM,但 Flask-SQLAlchemy 是最流行的扩展,它封装了 SQLAlchemy,让数据库操作更简单。
安装
pip install flask-sqlalchemy
配置与初始化
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db' # 使用 SQLite
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
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)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return f'<User {self.username}>'
创建数据库表
进入 Python shell,执行:
from app import db
db.create_all()
增删改查示例
# 创建
user = User(username='alice', email='alice@example.com')
db.session.add(user)
db.session.commit()
# 读取
User.query.all()
User.query.filter_by(username='alice').first()
# 更新
user.email = 'new@example.com'
db.session.commit()
# 删除
db.session.delete(user)
db.session.commit()
在视图函数中使用这些操作,即可实现动态网页。
错误处理与调试
自定义错误页面
使用 @app.errorhandler 装饰器定制 404、500 等错误页面:
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
启动调试器
开发时务必保持 debug=True,它会显示详细的错误堆栈,并提供一个交互式调试器。生产环境请务必关闭 Debug 模式。
部署建议
当你完成开发,需要部署到生产环境时,推荐使用以下组合:
- WSGI 服务器:Gunicorn(Linux)或 Waitress(Windows)
- 反向代理:Nginx 处理静态文件和 SSL
- 环境管理:使用环境变量配置敏感信息,设置
FLASK_ENV=production
示例 Gunicorn 启动命令:
gunicorn -w 4 -b 127.0.0.1:8000 app:app