【Flask】Flask中request对象的使用(常用)

对于 Web 应用,与客户端发送给服务器的数据交互至关重要。在 Flask 中由全局的 request 对象来提供这些信息,比如说GET在url后面追加参数、POST在body中带参数、又或者是POST的表单提交方式,这时候就需要从request里提取出参数。
这篇文章详细介绍了request对象常用的属性和方法。

导入request

from flask import request

request常用的属性和方法

属性用途类型
data记录请求的数据,并转化成字符串*
form记录请求中的表单数据MultiDict
args记录url中的查询参数MultiDict
cookies记录请求中的cookies信息Dict
headers记录请求报文头EnvironHeaders
method记录请求使用的HTTP方法GET/POST/…
files记录上传的文件*
url记录请求的URL地址string
  • form
    从POST或者PUT请求中解析表单数据。如果GET请求将表单数据编码到url里面,而不是放在表单中传输过来的信息,则不能使用form捕捉。使用form解析后是ImmutableMultiDict(一键多值字典)类型。
  • args
    获得url中携带的params(参数),与传输方式(GET or POST)无关。有时候POST请求也会将参数加入到url中,这种情况下也可以得到args属性。使用args解析后也是ImmutableMultiDict(一键多值字典)类型。
    form和args的例子:
    浏览器默认的将GET请求的表单数据编码到url中,而不会单独发送表单数据。POST请求的表单通过表单数据传到服务端,而不会编码到url中。利用浏览器这样的特性,就可以通过以下这个例子认识到form和args的区别:
    html代码:
<!--通过改变form标签中method属性来改变数据请求的方式-->
<form action="http://127.0.0.1:10001/login" method="POST">
First name:<br/>
<input type="text" name="firstname"><br/>

请选择一个选项:<br/>
<input type="radio" name="sex" value="male" checked>Male<br/>
<input type="radio" name="sex" value="female">Female<br/>

<input type="submit" value="Submit">
</form> 

python代码:

from flask import Flask,render_template,request
from time import sleep

app=Flask("submit and catch form element")

#使用request.args来获得表单数据
@app.route("/login",methods=["POST","GET"])
def check_pass():
	firstname=request.form.get("firstname")#获取表单中参数的值
	sex=request.args.get("sex")#获得url中携带的params(参数),与传输方式(GET or POST)无关
	print(firstname)
	print(sex)

	return render_template("login_success.html")

if __name__=="__main__":
	app.run(host="127.0.0.1",port="10001",debug=True)

1.当在HTML中使用POST方法提交表单时,结果如下:

海贼王
None

可以看到request通过form方法获得表单数据,这时,浏览器中请求的url为:http://127.0.0.1:10001/login
2.当在HTML中使用GET方法提交表单时,结果如下:

None
male

可以看到request通过args方法获取了url中的params,同时浏览器中请求的url为http://127.0.0.1:10001/login?firstname=%E6%B5%B7%E8%B4%BC%E7%8E%8B&sex=male

  • values
    类型为CombinedMultiDict,内容是form和args的结合。可以通过values代替form和args。
  • cookies
    返回请求的cookies,类型为dict。
  • headers
    返回请求头,为字典类型。比如chrome浏览器的请求头打印如下:
Host: 127.0.0.1:10001
Connection: keep-alive
Content-Length: 46
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: null
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: cross-site
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
  • data
    包含请求的数据,并转化成字符串,除非是Flask无法处理的mimetype。
  • files
    获取上传的文件流,可以获得一个文件对象,并保存本地。
  • method
    获取请求方法,GET或者POST或者其他。
  • get_json(force=False,slient=False,cache=True)
  • json
    如果请求的mimetype是application/json,那么这个参数将会解析json数据,如果不是将会返回None,可以代替上面的get_json()方法。
  • path
  • script_root
  • base_url
  • url
  • url_root
    如果用户请求的url如下面所示:
    http://www.lhystrive.com/application/page.html?name=lhy
    则上面参数内容如下:
名称显示内容
path./page.html
script_root/application
base_urlhttp://www.lhystrive.com/application/page.html
urlhttp://www.lhystrive.com/application/page.html?name=lhy
url_roothttp://www.lhystrive.com/application/

更多具体的内容可以参考下面这个博客,我觉得很不错!!!
【Flask】关于Flask的request属性

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值