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

相关推荐
涛声依旧-底层原理研究所13 分钟前
残差连接与层归一化通俗易懂的详解
人工智能·python·神经网络·transformer
csdn_aspnet19 分钟前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
fantasy_arch42 分钟前
pytorch人脸匹配模型
人工智能·pytorch·python
熊猫_豆豆42 分钟前
广义相对论水星近日点进动完整详细数学推导
python·天体·广义相对论
web3.08889991 小时前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python
AI算法沐枫1 小时前
深度学习python代码处理科研测序数据
数据结构·人工智能·python·深度学习·决策树·机器学习·线性回归
IT_陈寒2 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端
X1A0RAN2 小时前
解决Pycharm中部分文件或文件夹被隐藏不展示问题
ide·python·pycharm
kyriewen2 小时前
面试官让我查各部门工资最高的员工,我用AI三秒写出窗口函数,他愣了
后端·mysql·面试
文心快码BaiduComate2 小时前
干货|Comate Harness Engineering工程实践指南
前端·后端·程序员