Flask 详细讲解 + 实战实例(零基础可学)

Flask 是轻量级、灵活、易上手的 Python Web 框架,没有强制项目结构,非常适合快速开发网站、API、小型应用,也是入门 Web 开发的最佳选择。

我会从核心概念 → 安装 → 基础实例 → 进阶功能(路由、模板、表单、数据库)→ 完整项目一步步带你掌握。


一、Flask 核心基础

1. 什么是 Flask?

  • 基于 Python 的微型 Web 框架(Micro Framework)
  • 自带开发服务器、调试工具
  • 核心只包含:路由、请求 / 响应、模板引擎(Jinja2)
  • 扩展丰富:数据库、登录、表单、RESTful API 等

2. 适用场景

  • 个人博客、小型官网
  • 接口服务(API)
  • 原型快速开发
  • 中小型 Web 应用

3. 安装 Flask

打开命令行,执行:

bash

运行

复制代码
pip install flask

二、第一个 Flask 程序(Hello World)

最简代码

python

运行

复制代码
# 导入 Flask 类
from flask import Flask

# 创建应用实例
app = Flask(__name__)

# 路由:访问根目录 / 时触发
@app.route('/')
def hello():
    return "Hello Flask!这是我的第一个 Flask 程序"

# 启动程序
if __name__ == '__main__':
    app.run(debug=True)  # debug=True 开启调试模式,修改代码自动重启

运行与访问

  1. 保存为 app.py
  2. 命令行执行:python app.py
  3. 浏览器打开:http://127.0.0.1:5000

效果 :页面显示 Hello Flask!这是我的第一个 Flask 程序


三、Flask 核心知识点(必学)

1. 路由(Route)

路由就是URL 地址 对应 函数,决定用户访问某个网址时执行什么代码。

(1)基础路由

python

运行

复制代码
@app.route('/')         # 首页
@app.route('/about')    # 关于页面
@app.route('/user')     # 用户页面
(2)带参数的路由

python

运行

复制代码
# 接收用户名参数
@app.route('/user/<name>')
def user_info(name):
    return f"欢迎你,{name}!"

# 接收数字参数(限制类型)
@app.route('/age/<int:age>')
def show_age(age):
    return f"你的年龄是:{age}"

访问示例:

  • http://127.0.0.1:5000/user/张三
  • http://127.0.0.1:5000/age/20

2. 请求与响应

Flask 可以接收用户请求(GET/POST),并返回不同内容。

python

运行

复制代码
from flask import request

@app.route('/login', methods=['GET', 'POST'])
def login():
    # GET 请求:显示登录页
    if request.method == 'GET':
        return "请输入账号密码登录"
    # POST 请求:接收表单数据
    else:
        username = request.form.get('username')
        password = request.form.get('password')
        return f"登录成功:用户名={username},密码={password}"

3. 模板渲染(Jinja2)

Flask 使用 Jinja2 模板引擎,可以返回 HTML 页面,而不只是字符串。

步骤:
  1. 项目下新建文件夹 templates(必须叫这个名字)
  2. 在里面新建 index.html
  3. 后端使用 render_template 渲染

后端代码

python

运行

复制代码
from flask import render_template

@app.route('/html')
def show_html():
    # 向模板传递变量
    return render_template('index.html', name="Flask学习者", age=20)

index.html

html

预览

复制代码
<!DOCTYPE html>
<html>
<head>
    <title>Flask模板</title>
</head>
<body>
    <h1>你好,{{ name }}</h1>
    <p>年龄:{{ age }}</p>
</body>
</html>

4. 静态文件(CSS/JS/ 图片)

  1. 新建文件夹 static
  2. 放入 cssjsimages
  3. HTML 中使用:

html

预览

复制代码
<link rel="stylesheet" href="/static/style.css">
<img src="/static/logo.png">

四、进阶实战:完整 Flask 小项目

我们做一个用户信息展示 + 表单提交的完整 Demo。

项目结构

plaintext

复制代码
myflask/
├── app.py          # 主程序
├── static/         # 静态文件
└── templates/      # 模板
    └── index.html  # 首页
    └── user.html   # 用户页

1. app.py 完整代码

python

运行

复制代码
from flask import Flask, render_template, request

app = Flask(__name__)

# 首页
@app.route('/')
def index():
    return render_template('index.html', title="Flask 实战首页")

# 用户信息页面(带参数)
@app.route('/user/<name>')
def user(name):
    # 模拟数据
    user_data = {
        "name": name,
        "age": 22,
        "city": "北京"
    }
    return render_template('user.html', user=user_data)

# 表单提交
@app.route('/form', methods=['GET', 'POST'])
def form():
    if request.method == 'POST':
        username = request.form.get('username')
        email = request.form.get('email')
        return f"提交成功!<br>用户名:{username}<br>邮箱:{email}"
    return render_template('form.html')

if __name__ == '__main__':
    app.run(debug=True)

2. templates/index.html

html

预览

复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>{{ title }}</title>
</head>
<body>
    <h1>欢迎来到 Flask 实战项目</h1>
    <a href="/user/小明">查看小明信息</a><br>
    <a href="/form">表单提交页面</a>
</body>
</html>

3. templates/user.html

html

预览

复制代码
<!DOCTYPE html>
<html>
<head>
    <title>用户信息</title>
</head>
<body>
    <h2>用户详情</h2>
    <p>姓名:{{ user.name }}</p>
    <p>年龄:{{ user.age }}</p>
    <p>城市:{{ user.city }}</p>
    <a href="/">返回首页</a>
</body>
</html>

4. templates/form.html

html

预览

复制代码
<!DOCTYPE html>
<html>
<head>
    <title>表单提交</title>
</head>
<body>
    <h2>用户表单</h2>
    <form method="post">
        用户名:<input type="text" name="username"><br><br>
        邮箱:<input type="email" name="email"><br><br>
        <button type="submit">提交</button>
    </form>
</body>
</html>

运行项目

  1. 运行 app.py
  2. 访问:http://127.0.0.1:5000
  3. 可点击链接跳转到用户页、表单页,体验完整功能

五、Flask 常用扩展(进阶必备)

实际开发中,我们会用扩展快速实现功能:

  1. Flask-SQLAlchemy:数据库操作(ORM)
  2. Flask-Login:用户登录认证
  3. Flask-WTF:表单验证
  4. Flask-RESTful:API 开发
  5. Flask-Bootstrap:快速美化页面

总结

  1. Flask 轻量灵活,适合新手入门和快速开发
  2. 核心:路由 + 视图函数 + 模板 + 请求响应
  3. 项目结构:app.py + templates + static
  4. 可通过扩展实现数据库、登录、API 等高级功能

你已经掌握了 Flask 从 0 到 1 的全部核心知识!

相关推荐
m0_613856292 小时前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
我的xiaodoujiao3 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
ID_180079054733 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
时空系3 小时前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
CHANG_THE_WORLD5 小时前
python 批量终止进程exe
开发语言·python
古城小栈5 小时前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust
liann1195 小时前
3.2_红队攻击框架--MITRE ATT&CK‌
python·网络协议·安全·网络安全·系统安全·信息与通信
皮皮冰燃5 小时前
docker-18-WSL中安装docker并部署flask服务
docker·容器·flask
云天AI实战派5 小时前
AI 智能体问题排查指南:ChatGPT、API 调用到 Agent 上线失灵的全流程修复手册
大数据·人工智能·python·chatgpt·aigc
keep one's resolveY5 小时前
SpringBoot实现重试机制的四种方案
java·spring boot·后端