Skip to content

Flask 是一个基于 Python 的轻量级 Web 应用框架,核心思想是"只保留 Web 开发的核心功能,其余靠扩展"。本章从零搭建 Flask 开发环境,理解浏览器请求→服务器响应→返回页面的完整流程,并掌握路由、视图函数、request 对象、状态码、Cookie 与 Session 的基本用法。

Flask 框架是什么

Flask 旨在帮助开发者快速构建简单而强大的 Web 应用,相比 Django 的"大而全"(内建模板、表单、路由、数据库管理),Flask 只是一个内核,默认只依赖两个外部库:

  • Jinja2 模板引擎:负责 HTML 模板渲染
  • Werkzeug:WSGI 工具集,负责 HTTP 底层处理

Flask 的特点是几乎所有工具都以"导入扩展"的方式按需加载,性能满足一般 Web 开发需求,灵活性与可扩展性优于其他框架,对各种数据库契合度高。选型结论:小项目开发快,大项目设计灵活——按需求选框架。

  • 发展历程:2010 年 Flask 诞生 → 2013/2015 年扩展与生态丰富 → 至今 Python 社区持续更新

环境搭建

  1. 官网下载 Python,安装时勾选 "Add Python to PATH" 自动配置环境变量
  2. Win+Rcmdpip -V 验证 Python 与 pip 版本
  3. 配置阿里云镜像源后安装指定版本(课件教材版本,注意与教材一致避免版本差异):
bash
pip install flask==1.1.1 jinja2==2.11.3 itsdangerous==2.0.1 markupsafe==1.1.1 werkzeug==0.16.1
  1. PyCharm 创建 Flask 项目 → 运行 → 点击链接在浏览器访问

一个简单 Web 程序

1. 应用初始化

所有 Flask 程序创建时都必须先创建应用实例:

python
from flask import Flask
app = Flask(__name__)   # __name__ 获取当前代码文件的文件名

2. 路由与视图

路由用于让 Flask 知道"URL 对应的内容在哪里";被 @app.route 装饰的函数称为视图函数,返回请求对应的响应内容(字符串或 HTML 页面):

python
@app.route('/')
def hello_world():
    return 'Hello World!'

路由不止返回字符串,还可以返回重定向、HTML 页面渲染、文件、JSON 等。

3. 运行应用

python
if __name__ == '__main__':
    app.run(debug=True)   # debug=True 开启调试模式

__name__ == '__main__' 用于判断当前文件是否被直接运行。

请求与响应

浏览器向服务器发"请求"(request),服务器处理后返回"响应"。HTTP 是无状态协议,对事务处理没有记忆能力。

request 对象常用属性

属性数据类型解释
full_pathstrURL 中的访问路径,包含数据
urlstr请求的完整 URL
base_urlstr请求的 URL,不含数据
url_rootstr请求的根 URL,不含路径
remote_addrstr浏览器的 IP 地址
user_agentstr浏览器及操作系统信息
argsdictGET 请求参数
formdictPOST 提交的表单参数
filesdict请求上传的文件
cookiesdict浏览器 Cookie 数据

常见状态码

状态码信息解释
200OK一切正常
301Moved Permanently重定向
400Bad Request客户端请求错误
403Forbidden无权限访问
404Not Found找不到页面
405Method Not Allowed客户端使用了不支持的提交方法
500Internal Server Error服务器端代码出错
502Bad Gateway代理与服务器之间访问出错

在 Chrome 按 F12 打开开发者工具即可观测每次请求的响应状态码。

  • Cookie:HTTP 无状态,靠 Cookie 在浏览器端存储少量数据(偏好设置、临时信息)。存储容量有限(一般不超过 4KB),且会丢失——原因:过期时间到、浏览器设置不保存、清除浏览痕迹
  • Session:与 Cookie 作用相似,但只能在服务器端管理,用户本地无法修改,安全性更高,一般用于存储用户登录状态等敏感信息

实践建议

  1. 环境搭建时版本务必与教材一致(flask 1.1.1 系列),版本不同会导致代码行为不一致
  2. 用浏览器 F12 观察每次请求的状态码,建立"请求-响应"的直觉
  3. 动手实现一个带可变 URL 的路由(如 GitHub 用户页模式 @app.route('/user/<name>')),体会路由绑定

一句话总结

Flask 最小骨架三步:app = Flask(__name__) 建应用、@app.route 装饰视图函数、app.run(debug=True) 启动调试;GET 数据用 request.args、POST 用 request.form,与无状态 HTTP 对抗的登录态存服务器端 Session。

相关概念