Flask 从零入门
Flask 从零入门
1. 环境准备
安装 Python
- 确保已安装 Python(推荐 Python 3.6+)。
- 检查安装:终端运行
python --version
或python3 --version
。
安装 Flask
- 使用
pip
安装 Flask:pip install flask
2. 第一个 Flask 应用
创建文件 app.py
from flask import Flask
app = Flask(__name__) # 创建 Flask 应用实例
@app.route("/") # 定义路由:当访问根路径 "/" 时触发
def home():
return "Hello, Flask!" # 返回响应内容
if __name__ == "__main__":
app.run(debug=True) # 启动开发服务器,开启调试模式
运行应用
python app.py
- 访问
http://localhost:5000
,会看到Hello, Flask!
。
3. 核心概念
路由(Routing)
-
定义 URL 路径和对应的处理函数:
@app.route("/user/<username>") # 动态路由参数 <username> def show_user(username): return f"User: {username}"
- 访问
http://localhost:5000/user/Alice
,显示User: Alice
。
- 访问
模板(Templates)
-
创建模板目录:
- 在项目根目录新建
templates
文件夹。 - 创建
index.html
:<!DOCTYPE html> <html> <head> <title>{{ title }}</title> <!-- 使用变量 --> </head> <body> <h1>Hello, {{ name }}!</h1> </body> </html>
- 在项目根目录新建
-
渲染模板:
from flask import render_template @app.route("/template") def template_demo(): return render_template("index.html", title="Flask Demo", name="Bob")
4. 静态文件(CSS/JS)
- 在项目根目录新建
static
文件夹,存放 CSS、JavaScript 等文件。 - 示例结构:
project/ ├── app.py ├── templates/ │ └── index.html └── static/ └── style.css
- 在模板中引用静态文件:
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
5. 处理表单
安装扩展 Flask-WTF
pip install flask-wtf
示例代码
-
定义表单类(在
app.py
中):from flask_wtf import FlaskForm from wtforms import StringField, SubmitField class MyForm(FlaskForm): name = StringField("Name") submit = SubmitField("Submit")
-
处理表单请求:
from flask import request, redirect, url_for @app.route("/form", methods=["GET", "POST"]) def form_demo(): form = MyForm() if form.validate_on_submit(): # 处理 POST 请求 name = form.name.data return redirect(url_for("show_user", username=name)) return render_template("form.html", form=form) # 渲染表单页面
-
模板
form.html
:<form method="POST"> {{ form.hidden_tag() }} {{ form.name.label }} {{ form.name() }} {{ form.submit() }} </form>
6. 连接数据库(SQLite + Flask-SQLAlchemy)
安装扩展
pip install flask-sqlalchemy
配置数据库
from flask_sqlalchemy import SQLAlchemy
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///mydatabase.db" # 数据库文件路径
db = SQLAlchemy(app)
# 定义数据模型
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
# 创建数据库表(在首次运行时)
with app.app_context():
db.create_all()
使用数据库
@app.route("/add_user/<username>")
def add_user(username):
user = User(username=username)
db.session.add(user)
db.session.commit()
return f"Added user: {username}"
7. 项目结构(推荐)
my_flask_app/
├── app.py # 主程序
├── templates/ # HTML 模板
├── static/ # 静态文件(CSS/JS)
├── models.py # 数据模型
└── config.py # 配置文件
8. 常见问题
调试模式
- 开启调试模式后,代码修改会自动重启服务器:
if __name__ == "__main__": app.run(debug=True) # 仅在开发环境使用!
修改端口
app.run(host="0.0.0.0", port=8000)
处理 404 错误
@app.errorhandler(404)
def page_not_found(error):
return "Page not found", 404
部署到生产环境
- 推荐使用
Gunicorn
+Nginx
:pip install gunicorn gunicorn app:app -w 4 -b 0.0.0.0:8000
下一步学习
- 扩展库:学习
Flask-Login
(用户认证)、Flask-RESTful
(API 开发)。 - 官方文档:Flask Documentation
- 项目实战:尝试构建一个博客系统或 Todo 应用。
Flask 从零入门
http://ddxd.xyz//archives/flask-cong-ling-ru-men