Flask Request 对象介绍
在 Flask 应用中,Request 对象是非常重要的一个对象,因为它提供了访问客户端发送的 HTTP 请求信息的方法和属性。
在本文中,我们将详细介绍 Flask Request 对象的用法和属性。
Request 对象的属性
在 Flask 应用中,Request 对象包含了客户端发送的 HTTP 请求信息,可以通过 Request 对象的属性获取这些信息,包括但不限于以下属性:
- args:
- 格式:ImmutableMultiDict([("name1", "val1"), ("name2", "val2")])
- 说明:一个不可变的 MultiDict 类型,包含了查询参数中的键值对(url 后面的 ?name1=val1&name2=val2)。
- form:
- 格式:ImmutableMultiDict([("username", "bob"), ("password", "123456")])
- 说明:一个不可变的 MultiDict 类型,包含了 POST 请求中的键值对。
- headers:
- 格式:ImmutableHeaders([("Content-Type", "application/json"), ("User-Agent", "Mozilla/5.0")])
- 说明:一个不可变的 Headers 类型,包含了请求头信息。
- cookies:
- 格式:ImmutableMultiDict([("name1", "val1"), ("name2", "val2")])
- 说明:一个不可变的 MultiDict 类型,包含了客户端发送的 Cookie 信息。
- files:
- 格式:ImmutableMultiDict([("images",
), ("files", )]) - 说明:一个不可变的 MultiDict 类型,包含了文件上传的信息。
- 格式:ImmutableMultiDict([("images",
- path:
- 格式:"/path/to/resource"
- 说明:请求路径的字符串形式。
Request 对象的方法
在 Flask 应用中,Request 对象除了拥有以上的属性,还提供了一些常用的方法,包括但不限于:
- get(key, default=None, type=None):
- 说明:获取一个参数的值。
- 参数:
- key:参数名。
- default:默认值(如果参数不存在时使用)。
- type:值的类型(将参数转换成指定的类型)。
- 示例:
request.args.get("name", "no name", str)
- getlist(key, type=None):
- 说明:获取一个参数的值(如果有多个值则返回一个列表)。
- 参数:
- key:参数名。
- type:值的类型(将参数转换成指定的类型)。
- 示例:
request.args.getlist("favorite_colors", str)
- get_json():
- 说明:获取请求的 JSON 数据。
- 示例:
request.get_json()
- is_json:
- 说明:判断请求是否是 JSON 格式。
- 示例:
request.is_json
- is_xhr:
- 说明:判断请求是否是 AJAX 请求。
- 示例:
request.is_xhr
示例1:获取 GET 请求的参数
以下是一个示例程序,演示如何获取 GET 请求的参数:
from flask import Flask, request
app = Flask(__name__)
@app.route("/hello")
def hello():
name = request.args.get("name", "no name", str)
return f"Hello, {name}!"
if __name__ == "__main__":
app.run(debug=True)
访问 http://127.0.0.1:5000/hello?name=Bob
可以得到输出结果:
Hello, Bob!
访问 http://127.0.0.1:5000/hello
可以得到输出结果:
Hello, no name!
示例2:获取 POST 请求的参数
以下是一个示例程序,演示如何获取 POST 请求的参数:
from flask import Flask, request
app = Flask(__name__)
@app.route("/login", methods=["POST"])
def login():
username = request.form.get("username")
password = request.form.get("password")
if username == "admin" and password == "password":
return "Login success."
else:
return "Login failed."
if __name__ == "__main__":
app.run(debug=True)
使用 POSTMAN 发送 POST 请求(Content-type 为 application/x-www-form-urlencoded),其中参数为 username=admin&password=password:
访问 http://127.0.0.1:5000/login
可以得到输出结果:
Login success.
使用 POSTMAN 发送 POST 请求(Content-type 为 application/json),其中参数为 {"username":"admin", "password":"password"}:
访问 http://127.0.0.1:5000/login
可以得到输出结果:
Login failed.
本文链接:https://my.lmcjl.com/post/19100.html
展开阅读全文
4 评论