Flask 从零入门

Flask 从零入门

1. 环境准备

安装 Python

  • 确保已安装 Python(推荐 Python 3.6+)。
  • 检查安装:终端运行 python --versionpython3 --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)

  1. 创建模板目录

    • 在项目根目录新建 templates 文件夹。
    • 创建 index.html
      <!DOCTYPE html>
      <html>
      <head>
          <title>{{ title }}</title>  <!-- 使用变量 -->
      </head>
      <body>
          <h1>Hello, {{ name }}!</h1>
      </body>
      </html>
      
  2. 渲染模板

    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

示例代码

  1. 定义表单类(在 app.py 中):

    from flask_wtf import FlaskForm
    from wtforms import StringField, SubmitField
    
    class MyForm(FlaskForm):
        name = StringField("Name")
        submit = SubmitField("Submit")
    
  2. 处理表单请求

    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)  # 渲染表单页面
    
  3. 模板 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
    

下一步学习

  1. 扩展库:学习 Flask-Login(用户认证)、Flask-RESTful(API 开发)。
  2. 官方文档Flask Documentation
  3. 项目实战:尝试构建一个博客系统或 Todo 应用。

Flask 从零入门
http://ddxd.xyz//archives/flask-cong-ling-ru-men
作者
Administrator
发布于
2025年02月26日
许可协议