Appearance
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 社区持续更新
环境搭建
- 官网下载 Python,安装时勾选 "Add Python to PATH" 自动配置环境变量
Win+R→cmd→pip -V验证 Python 与 pip 版本- 配置阿里云镜像源后安装指定版本(课件教材版本,注意与教材一致避免版本差异):
bash
pip install flask==1.1.1 jinja2==2.11.3 itsdangerous==2.0.1 markupsafe==1.1.1 werkzeug==0.16.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_path | str | URL 中的访问路径,包含数据 |
url | str | 请求的完整 URL |
base_url | str | 请求的 URL,不含数据 |
url_root | str | 请求的根 URL,不含路径 |
remote_addr | str | 浏览器的 IP 地址 |
user_agent | str | 浏览器及操作系统信息 |
args | dict | GET 请求参数 |
form | dict | POST 提交的表单参数 |
files | dict | 请求上传的文件 |
cookies | dict | 浏览器 Cookie 数据 |
常见状态码
| 状态码 | 信息 | 解释 |
|---|---|---|
| 200 | OK | 一切正常 |
| 301 | Moved Permanently | 重定向 |
| 400 | Bad Request | 客户端请求错误 |
| 403 | Forbidden | 无权限访问 |
| 404 | Not Found | 找不到页面 |
| 405 | Method Not Allowed | 客户端使用了不支持的提交方法 |
| 500 | Internal Server Error | 服务器端代码出错 |
| 502 | Bad Gateway | 代理与服务器之间访问出错 |
在 Chrome 按 F12 打开开发者工具即可观测每次请求的响应状态码。
Cookie 与 Session
- Cookie:HTTP 无状态,靠 Cookie 在浏览器端存储少量数据(偏好设置、临时信息)。存储容量有限(一般不超过 4KB),且会丢失——原因:过期时间到、浏览器设置不保存、清除浏览痕迹
- Session:与 Cookie 作用相似,但只能在服务器端管理,用户本地无法修改,安全性更高,一般用于存储用户登录状态等敏感信息
实践建议
- 环境搭建时版本务必与教材一致(flask 1.1.1 系列),版本不同会导致代码行为不一致
- 用浏览器 F12 观察每次请求的状态码,建立"请求-响应"的直觉
- 动手实现一个带可变 URL 的路由(如 GitHub 用户页模式
@app.route('/user/<name>')),体会路由绑定
一句话总结
Flask 最小骨架三步:app = Flask(__name__) 建应用、@app.route 装饰视图函数、app.run(debug=True) 启动调试;GET 数据用 request.args、POST 用 request.form,与无状态 HTTP 对抗的登录态存服务器端 Session。