本文最后更新于 48 天前,其中的信息可能已经有所发展或是发生改变。
📌 一、Flask 是什么?
Flask 是一个微框架,意思是不强制你用某种结构,也不自带数据库、表单验证等功能,但你可以根据需要添加插件,轻装上阵。
特点:
- 🪶 轻量灵活
- 🧩 可扩展性强
- 🐍 用 Python 写的,语法自然
- 🚀 入门门槛低
🧰 二、开发环境准备
1. 安装 Python(推荐 3.8+)
可到官网下载:https://www.python.org/downloads/
安装时记得勾选:✅ Add Python to PATH
2. 创建项目文件夹
mkdir flask_tutorial
cd flask_tutorial
3. 创建虚拟环境(推荐)
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Mac/Linux
4. 安装 Flask
pip install flask
🚀 三、第一个 Flask 应用
创建一个文件 app.py
:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, Flask!'
if __name__ == '__main__':
app.run(debug=True)
启动应用:
python app.py
浏览器访问:http://127.0.0.1:5000
📂 四、项目结构推荐
flask_tutorial/
├── app.py
├── static/ # 静态文件(css/js/images)
├── templates/ # HTML模板文件
└── venv/ # 虚拟环境文件夹
🧭 五、路由与视图函数
定义一个带参数的路由:
@app.route('/user/<username>')
def show_user(username):
return f'用户:{username}'
🎨 六、使用模板(Jinja2)
在 templates/
中创建 index.html
:
<!-- templates/index.html -->
<!DOCTYPE html>
<html>
<head><title>首页</title></head>
<body>
<h1>欢迎,{{ name }}!</h1>
</body>
</html>
在 app.py
中渲染它:
from flask import render_template
@app.route('/welcome/<name>')
def welcome(name):
return render_template('index.html', name=name)
📦 七、静态文件管理
创建 static/style.css
:
body {
background-color: #f0f0f0;
font-family: Arial;
}
在模板中使用:
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
📝 八、表单处理
HTML 表单:
<!-- templates/form.html -->
<form method="post">
姓名:<input type="text" name="username">
<input type="submit" value="提交">
</form>
Flask 处理表单数据:
from flask import request
@app.route('/submit', methods=['GET', 'POST'])
def submit():
if request.method == 'POST':
username = request.form['username']
return f'你提交了:{username}'
return render_template('form.html')
🛢️ 九、连接数据库(以 SQLite 为例)
安装扩展:
pip install flask_sqlalchemy
使用 SQLAlchemy:
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.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)
# 创建数据库
with app.app_context():
db.create_all()
🔒 十、用户登录系统
pip install flask-login
基本流程:
- 创建用户模型
- 设置用户登录状态
- 设置登录视图、登出视图
- 使用
@login_required
装饰器保护路由
完整实现比较复杂。
🧪 十一、Flask 单元测试
import unittest
class FlaskTestCase(unittest.TestCase):
def setUp(self):
self.app = app.test_client()
self.app.testing = True
def test_home(self):
response = self.app.get('/')
self.assertEqual(response.status_code, 200)
self.assertIn(b'Hello', response.data)
📦 十二、打包与部署
1. 创建 requirements.txt
pip freeze > requirements.txt
2. 生产部署方式推荐使用 Gunicorn + Nginx(Linux)
pip install gunicorn
gunicorn app:app
🧠 十三、常用扩展库推荐
名称 | 说明 |
---|---|
Flask-SQLAlchemy | ORM,操作数据库 |
Flask-WTF | 表单处理和CSRF保护 |
Flask-Login | 登录系统 |
Flask-Migrate | 数据库迁移管理 |
Flask-RESTful | 快速构建REST API |
Flask-Caching | 缓存管理 |
🏁 总结
Flask 是一个灵活又强大的 Web 框架,适合初学者从小项目入手,逐步深入构建复杂系统。
建议学习路线:
- 理解路由和模板渲染
- 学会处理表单和请求
- 学习数据库操作
- 实现用户认证系统
- 尝试部署项目到云端(如 Render、Heroku、VPS 等)