文章目录
- @app.route(‘/detail/<int:aid>’) def detail(aid): return f”文章ID是: {aid}” 识别特征:URL路径中用< >包裹的部分 获取方式:直接作为函数参数 示例: 访问URL: /detail/42 结果: aid自动获取值`42
- @app.route(‘/search’) def search(): keyword = request.args.get(‘q’) return f”搜索关键词: {keyword}” 识别特征:URL中?后面的部分,形如key=value,多个参数用&连接 获取方式:request.args.get('key') 示例: 访问URL: /search?q=flask&page=2 获取: q: “flask” page: “2” /search?q=flask&page=2 ↑ ↑ | request.args.get(‘page’) → “2” request.args.get(‘q’) → “flask”
- @app.route(‘/login’, methods=[‘POST’]) def login(): username = request.form.get(‘username’) password = request.form.get(‘password’) return f”用户{username}登录中…” 识别特征:通过<form>表单提交的数据 获取方式:request.form.get('field_name') 示例表单: <form action=”/login” method=”post”> <input type=”text” name=”username”> <input type=”password” name=”password”> <button>提交</button> </form> 表单提交 → 请求体: username=admin&password=123456 ↓request.form.get('username') → "admin"request.form.get('password') → "123456"
- 错误做法: @app.route(‘/detail/<int:aid>’) def detail(): aid = request.args.get(‘aid’) # 这样获取不到! 正确做法: @app.route(‘/detail/<int:aid>’) def detail(aid): # 直接从参数获取 return str(aid)
- 错误做法: # 访问URL: /api?user=john user = request.form.get(‘user’) # 返回None 正确做法: user = request.args.get('user') # 返回"john"
- 错误做法: # 提交了一个登录表单 username = request.args.get(‘username’) # 返回None 正确做法: username = request.form.get(‘username’)
目录
- 一、参数获取方式全景图
- 二、详细解析每种方式
- 1. 路由参数:URL路径中的变量
- 2. URL查询参数(request.args):问号后的键值对
- 3. 表单数据(request.form):POST请求体
- 三、常见混淆场景解析
- 混淆1:把路由参数当成查询参数获取
- 混淆2:用request.form获取GET参数
- 混淆3:用request.args获取POST表单数据
- 四、记忆技巧
- 五、综合示例
先来看一个总览表格,对比三种主要获取方式:
| 获取方式 | 适用场景 | 示例URL | 代码示例 |
|---|---|---|---|
| 路由参数 <int:aid> | URL路径中的变量部分 | /detail/123 | def detail(aid): |
| request.args | URL查询字符串(?后面的键值对) | /publish?title=hello | request.args.get('title') |
| request.form | POST表单提交的数据 | 表单提交(无直接URL体现) | request.form.get('title') |
@app.route('/detail/<int:aid>')
def detail(aid):
return f"文章ID是: {aid}"
识别特征:URL路径中用< >包裹的部分
获取方式:直接作为函数参数
示例:
- 访问URL: /detail/42
- 结果: aid自动获取值`42
@app.route('/search')
def search():
keyword = request.args.get('q')
return f"搜索关键词: {keyword}"
识别特征:URL中?后面的部分,形如key=value,多个参数用&连接
获取方式:request.args.get('key')
示例:
访问URL: /search?q=flask&page=2
获取:
- q: “flask”
- page: “2”
/search?q=flask&page=2
↑ ↑
| request.args.get('page') → "2"
request.args.get('q') → "flask"
@app.route('/login', methods=['POST'])
def login():
username = request.form.get('username')
password = request.form.get('password')
return f"用户{username}登录中..."
识别特征:通过<form>表单提交的数据
获取方式:request.form.get('field_name')
示例表单:
<form action="/login" method="post"> <input type="text" name="username"> <input type="password" name="password"> <button>提交</button> </form>
表单提交 → 请求体:
username=admin&password=123456
↓
request.form.get('username') → "admin"
request.form.get('password') → "123456"
错误做法:
@app.route('/detail/<int:aid>')
def detail():
aid = request.args.get('aid') # 这样获取不到!
正确做法:
@app.route('/detail/<int:aid>')
def detail(aid): # 直接从参数获取
return str(aid)
错误做法:
# 访问URL: /api?user=john
user = request.form.get('user') # 返回None
正确做法:
user = request.args.get('user') # 返回"john"
错误做法:
# 提交了一个登录表单
username = request.args.get('username') # 返回None
正确做法:
username = request.form.get('username')
1.看URL结构:
- /path/<variable> → 路由参数 → 函数参数获取
- /path?key=value → 查询参数 → request.args
- 表单提交 → request.form
2.HTTP方法联想:
- GET请求的参数通常在URL中 → request.args
- POST请求的参数通常在请求体中 → request.form
3.开发时的小技巧:
print(request.args) # 查看所有查询参数 print(request.form) # 查看所有表单数据
from flask import Flask, request
app = Flask(__name__)
# 路由参数 + 查询参数
@app.route('/user/<int:user_id>')
def user_profile(user_id):
action = request.args.get('action', 'view') # 带默认值
return f"用户{user_id}的个人资料,操作: {action}"
# 表单处理
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form.get('username')
email = request.form.get('email')
return f"注册成功: {username} ({email})"
return '''
<form method="post">
用户名: <input name="username"><br>
邮箱: <input name="email"><br>
<button>注册</button>
</form>
'''
记住:观察URL结构是第一步,然后根据参数所在位置选择正确的获取方法。
到此这篇关于Flask请求参数获取常用方式详解的文章就介绍到这了,更多相关Flask获取请求参数内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- 使用Flask获取请求参数的方式总结
- 详解flask中如何获取不请求方式的参数
- flask post获取前端请求参数的三种方式总结
- 使用flask如何获取post请求参数