flask基础---第三篇
flask中request的一些方法
- 首先from flask import request
1.request.path
2.request.host
3.request.host_url
from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): print(request.path) #/ print(request.host) #127.0.0.1:5000 print(request.host_url) #http://127.0.0.1:5000/ return 'hello' if __name__ == '__main__': app.run(debug=True)
4.request.method 获取请求方式
from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): print(request.method) #GET if request.method=="GET": print('use GET method') #use GET method return 'hello' if __name__ == '__main__': app.run(debug=True)
5.request.args 获取url参数
- 获取字典的key值有两种方法,分别是索引['id']和get方法,如果索引的value值错误会出现一个keyerro的错误,如果是get的value的值错误会是None
- request.args.get('id') #拿到url单独的一个参数
- request.args.to_dict() #得到一个字典
- request.args.to_dict().get('id') #字典通过get方法获取值
- request.args.to_dict()['id'] #字典通过索引获取值
from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): #获取url中的参数,比如url为http://127.0.0.1:5000/?id=1&name=2,通过request.args得到一个
#类似于字典的元组ImmutableMultiDict([('id', '1'), ('name', '2')]) print(request.args) #ImmutableMultiDict([('id', '1'), ('name', '2')]) print(request.args.get('id')) #拿到了id的值1 print(request.args.get('name')) #拿到了name的值2 arg=request.args.to_dict() print(arg) #拿到了一个字典{'id': '1', 'name': '2'} print(arg['id']) #通过索引拿到了id的值1 print(arg.get('id')) #通过get方法拿到了id的值1 return 'hello' if __name__ == '__main__': app.run(debug=True)
6.request.form 获取FormData 数据
- request.form.to_dict() #获取一个登陆信息的字典
7.request.files 接收FormData中的文件
- request.files.to_dict() #生成一个字典
- request.file.get('文件名') # 通过文件名获取文件
- request.file.get('文件名').save(file.filename) #通过文件名获取文件之后以原文件名保存到当前目录下
- request.file.get('文件名').save('新文件名') #通过文件名获取文件之后以新文件名保存到当前目录下
from flask import Flask, request, render_template app = Flask(__name__) @app.route('/login',methods=['POST','GET']) #如果出现状态码405是因为没有加上methods方法 def login(): if request.method=="GET": return render_template('login2.html') else: print(request.form)#获得ImmutableMultiDict([('username', '123')]) print(request.form.to_dict())#获得一个字典{'username': '123'} print(request.files)#获取ImmutableMultiDict([('my_file', <FileStorage: '1.jpg' ('image/jpeg')>)]) print(request.files.to_dict())#获取字典{'my_file': <FileStorage: '1.jpg' ('image/jpeg')>} print(request.files.get('my_file'))#获取key值<FileStorage: '1.jpg' ('image/jpeg')> file=request.files.get('my_file') file.save(file.filename) #保存文件到目录下 return '登录成功' if __name__ == '__main__': app.run(debug=True)
//login.html页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="" method ='post' enctype="multipart/form-data">#enctype="multipart/form-data <input type="text" name="username">#输入框 <input type="file" name="my_file"> #提交文件的选择框 <input type="submit" value="提交">#按钮 </form> </body> </html>
8.request.json 请求头 带有Content-Type:application/json 请求体中的数据自动序列化至此,生成一个字典,而且在data中依然
存储着以byte形式的原始数据
9.request.data 获取请求体中的原始数据 是一个字节流b"”
10request.values 这个是获取args+form 慎用,有坑