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  慎用,有坑

原文地址:https://www.cnblogs.com/l1222514/p/10697642.html