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 开启调试模式,修改代码自动重启
运行与访问
- 保存为
app.py - 命令行执行:
python app.py - 浏览器打开:
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 页面,而不只是字符串。
步骤:
- 项目下新建文件夹
templates(必须叫这个名字) - 在里面新建
index.html - 后端使用
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/ 图片)
- 新建文件夹
static - 放入
css、js、images - 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>
运行项目
- 运行
app.py - 访问:
http://127.0.0.1:5000 - 可点击链接跳转到用户页、表单页,体验完整功能
五、Flask 常用扩展(进阶必备)
实际开发中,我们会用扩展快速实现功能:
- Flask-SQLAlchemy:数据库操作(ORM)
- Flask-Login:用户登录认证
- Flask-WTF:表单验证
- Flask-RESTful:API 开发
- Flask-Bootstrap:快速美化页面
总结
- Flask 轻量灵活,适合新手入门和快速开发
- 核心:路由 + 视图函数 + 模板 + 请求响应
- 项目结构:
app.py+templates+static - 可通过扩展实现数据库、登录、API 等高级功能
你已经掌握了 Flask 从 0 到 1 的全部核心知识!