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 的全部核心知识!

相关推荐
架构师老Y2 小时前
003、Python Web框架深度对比:Django vs Flask vs FastAPI
前端·python·django
疯狂成瘾者3 小时前
语义分块提升RAG检索精度
python
小陈工5 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
大鸡腿同学9 小时前
【成长类】《只有偏执狂才能生存》读书笔记:程序员的偏执型成长地图
后端
0xDevNull9 小时前
MySQL数据冷热分离详解
后端·mysql
A__tao9 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢9 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
AI袋鼠帝9 小时前
OpenClaw(龙虾)最强开源对手!Github 40K Star了,又一个爆火的Agent..
后端
迷藏4949 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源