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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41427568/article/details/100609906

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

导入request

from flask import request

request常用的属性和方法

  • 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,内容是value和args的结合。可以通过value代替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。
  • file
    获取上传的文件流,可以获得一个文件对象,并保存本地。
  • 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_url http://www.lhystrive.com/application/page.html
url http://www.lhystrive.com/application/page.html?name=lhy
url_root http://www.lhystrive.com/application/

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

猜你喜欢

转载自blog.csdn.net/qq_41427568/article/details/100609906
今日推荐