在 flask 中,可以从 request 对象中获取各种类型的参数。以下是全面整理的获取参数的方式及示例代码。
1. 获取 url 查询参数(query string parameters)
url 中的查询参数通过 ?key=value&key2=value2 的形式传递,使用 request.args 获取。
示例:
from flask import flask, request
app = flask(__name__)
@app.route('/query')
def get_query_params():
param1 = request.args.get('param1', default=none, type=str) # 获取单个参数
param2 = request.args.getlist('param2') # 获取多个同名参数
return f"param1: {param1}, param2: {param2}"
# 测试 url: http://127.0.0.1:5000/query?param1=value1¶m2=value2¶m2=value3
2. 获取表单数据(form data)
当请求方法为 post 或 put 时,可以通过 request.form 获取表单数据。
示例:
@app.route('/form', methods=['post'])
def get_form_data():
name = request.form.get('name', default=none, type=str) # 获取单个参数
age = request.form.get('age', default=0, type=int) # 获取并转换为整数
return f"name: {name}, age: {age}"
# 测试:使用 postman 或 curl 提交表单数据
3. 获取 json 数据
当客户端发送 json 格式的数据时,可以使用 request.json 获取解析后的字典。
示例:
@app.route('/json', methods=['post'])
def get_json_data():
data = request.json # 获取 json 数据
name = data.get('name', none)
age = data.get('age', 0)
return f"name: {name}, age: {age}"
# 测试:使用 postman 或 curl 提交 json 数据
# 请求头:content-type: application/json
# 请求体:{"name": "alice", "age": 25}
4. 获取文件上传(file uploads)
当上传文件时,可以通过 request.files 获取文件对象。
示例:
@app.route('/upload', methods=['post'])
def upload_file():
file = request.files.get('file') # 获取上传的文件
if file:
filename = file.filename
file.save(f"./{filename}") # 保存文件到本地
return f"file uploaded: {filename}"
return "no file uploaded"
# 测试:使用 postman 或 curl 提交文件
5. 获取路径参数(route parameters)
路径参数是通过 url 路径定义的动态部分,使用 <variable_name> 定义,并在函数中接收。
示例:
@app.route('/user/<username>')
def get_user(username):
return f"hello, {username}!"
# 测试 url: http://127.0.0.1:5000/user/alice
6. 获取原始请求体(raw body)
如果需要直接获取请求的原始内容,可以使用 request.data 或 request.get_data()。
示例:
@app.route('/raw', methods=['post'])
def get_raw_data():
raw_data = request.data.decode('utf-8') # 获取并解码原始数据
return f"received raw data: {raw_data}"
# 测试:提交任意格式的原始数据
7. 获取 headers
通过 request.headers 获取请求头信息。
示例:
@app.route('/headers')
def get_headers():
user_agent = request.headers.get('user-agent') # 获取 user-agent
host = request.headers.get('host') # 获取 host
return f"user-agent: {user_agent}, host: {host}"
# 测试:访问任意 url
8. 获取 cookies
通过 request.cookies 获取客户端发送的 cookie。
示例:
@app.route('/cookies')
def get_cookies():
session_id = request.cookies.get('session_id', default=none) # 获取 cookie
return f"session id: {session_id}"
# 测试:设置 cookie 并访问
9. 获取 method 类型
通过 request.method 获取当前请求的方法类型(如 get, post 等)。
示例:
@app.route('/method', methods=['get', 'post'])
def get_method():
return f"request method: {request.method}"
# 测试:分别用 get 和 post 方法访问
10. 获取完整的 url
通过 request.url 获取完整的请求 url。
示例:
@app.route('/url')
def get_full_url():
return f"full url: {request.url}"
# 测试:访问任意 url
总结
| 方式 | 使用场景 | 属性/方法 |
|---|---|---|
| 查询参数 | url 中的键值对 | request.args |
| 表单数据 | html 表单提交 | request.form |
| json 数据 | 客户端发送 json 格式数据 | request.json |
| 文件上传 | 文件上传 | request.files |
| 路径参数 | 动态路由中的参数 | 函数参数 |
| 原始请求体 | 获取未解析的请求体 | request.data |
| headers | 获取请求头信息 | request.headers |
| cookies | 获取客户端发送的 cookie | request.cookies |
| method 类型 | 获取请求方法类型 | request.method |
| 完整 url | 获取完整的请求 url | request.url |
以上方法涵盖了 flask 中从 request 对象获取参数的主要方式,根据实际需求选择合适的方式即可。
到此这篇关于使用flask获取请求参数的方式总结的文章就介绍到这了,更多相关flask获取请求参数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论