Python 现代开发学习笔记

(三)路径、查询串、表单与 JSON 的取值

1. 沿输入位置选择接口

Flask 的路径写作 /books/<int:book_id>,转换器把匹配到的数字交给参数。请求 /books/no 没有匹配整数转换器,直接得到 404;这与前一章把不合格编号识别为参数错误的过程不同。

输入 读取方式 需要继续处理的内容
/books/3 函数参数 book_id 按编号查记录和归属
/?q=Python request.args.get("q", "") 文本长度、筛选含义
HTML 表单 request.form.get(...) 勾选状态、重复项、字段规则
JSON 请求体 request.get_json() 解析后的结构和字段校验
请求方法与头 request.method、request.headers 按动作和协议继续判断

request 指向正在处理的那次请求,下一节会展开它依赖的上下文。request.args 与 request.form 是可以保存同名多项的 MultiDict;.get 读第一项,.getlist 读全部项。提交两个 title 时,单独使用 .get 会漏看重复项,后面的表单校验会明确检查。

2. 解析成功之后仍要校验

短例的 request.get_json() 先检查媒体类型,再解析 JSON。表单文本发送到 /inspect,得到 415;声明 JSON 却发送破损语法,得到 400。拿到字典之后,书名是否为空、标签是否合格仍需要模型或校验函数处理。

Flask 不会因为参数写了 data: BookDraft,就自动读取并创建这个对象。这里从 request.form 显式读取字段,再构造数据类;也可以在项目中主动调用上一章的 Pydantic 模型。框架帮忙解析的部分和业务需要检查的部分,应沿实际调用分清。

同名表单字段在 MultiDict 中保留两项,get 只取第一项而 getlist 看到全部;JSON 请求先核对媒体类型再解析结构

笔记正文与全部题解 · Ctrl / ⌘ K