版权声明:此博客出自HuQi,感谢您的转载 https://blog.csdn.net/JSYhq/article/details/88616328
一、Request 方法介绍
1. Request中 url 的方法使用
# 导入request模块
from flask import Flask, request
1. 查看请求方式
request.method
2. 获取URL上的参数,http://192.168.1.1:9090/hello?page=10
request.args.get("page") ->ImmutableMultiDict([('page','10')])
备注:将获取参数转为字典,request.args.to_dict()->{'page':'10'}
3. 请求头信息
request.headers
4. 请求url地址:http://0.0.0.0:9527/req?id=10 -> 获得 /req
request.path
5. 请求url地址:http://127.0.0.1:5000/
request.url
6. 访问:http://0.0.0.0:9527/req?id=10 ->获得http://127.0.0.1:9527/req
request.base_url
7. 访问:http://0.0.0.0:9527/req?id=10 -> 获得 127.0.0.1:9527
request.host
8. 访问:http://0.0.0.0:9527/req?id=10 -> 获得 http://127.0.0.1:9527/
request.host_url
2. Request中 form 的使用
"""
formdata数据(<form></form>内的称为formdata)
"""
<form action="" method="post">
<input type="text" name="username">
<input type="submit">
</form>
1. 获取POST提交过来的数据
request.form -> ImmutableMultiDict([('username','slrc')])
request.form.to_dict() -> 直接转成字典{'username':'slrc'}
request.form.get("username") -> 'slrc'
3. Request中两个特殊值 json、data
1. request.json
如请求头Content-type:application/json -> 可取出POST提交的值,原理这个
request.json调用的是request.get_json()这个函数,但是get_json默认只对
mime为application/json的请求正确解析
解决方法:
(1)http请求增加Content-type:application/json 的header
(2)使用request.get_json(force=True)忽略mimetype
2. request.data
可以获取未经处理过的原始数据,如果格式是json的,则取得json字符串,排序和
请求参数一致
3. request.values
包含 args,formdata 中的所有数据;其中formdata数据优先
二、Request 中methods
# 如果视图中含有多种请求方式,需要在路由添加methods参数,必须要有GET;
# 如果只写POST,GET请求救收不到了,路由默认是GET
@app.route("/req", methods=["GET","POST"])
def req():
if request.method == "GET":
return render_template("login.html")
else:
return jsonify({"username":"hello"})
三、Request 中files
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile">
<input type="submit" value="提交">
</form>
@app.route("/home", methods=["GET","POST"], default=({'name':1}))
def home(name):
print('我是home')
if request.method == "GET":
return render_template("home.html")
else:
session["user"] = 'monkey'
# 利用files中文件名,获取files对象
file_obj = request.files.get("myfile")
1. 使用前端原始的文件名,作为存储服务端时的文件名
file_obj.save(file_obj.filename)
2. 服务端自定义名字,但是文件类型必须和前端源文件类型一致
file_obj.save("hello.py")
return render_template("img.html")