Flask - request對象

一、前言

參考 https://www.cnblogs.com/poloyy/p/14995215.html

1、Flask 中很重要的 request 對象

  • 瀏覽器訪問服務端時,向服務端發送請求
  • Flask 程序使用 request 對象描述請求信息
  • 當你想獲取請求體、請求參數、請求頭數據的時候,就需要靠 request 對象了

2、真實使用場景

瀏覽器訪問服務端,需要將相應的數據發送給服務端,可能有如下場景:

  • 通過 URL 參數進行查詢,瀏覽器需要將查詢參數發送給服務端
  • 提交表單 form 進行查詢,瀏覽器需要將表單 form 中的字段發送給服務端
  • 上傳文件,瀏覽器需要將文件發送給服務端
  • 通過 JSON 格式的請求體進行請求,一般是 post 請求

服務端收到將客戶端發送的數據後,封裝形成一個請求對象,在 Flask 中,請求對象是一個模塊變量 flask.request

 form、args、values、json 都是獲取 http 請求的請求數據的屬性,只不過請求體類型不同

二、獲取url請求參數的例子

1、完整代碼

from flask import Flask, request
app = Flask(__name__)

@app.route('/query')
def query():
    return {"name":request.args['name'],"age":request.args['age']}

@app.route('/query2')
def query2():
    print('args=',request.args)
    print('form=',request.form)
    return 'form'

@app.route('/query3')
def query3():
    print('args=',request.args)
    print('json=',request.json)
    return 'json'

@app.route('/query4')
def query4():
    return {"name":request.values['name'],"age":request.values['age']}

if __name__ == '__main__':
    app.run(debug = True)

 2、請求結果

1)/query

query後面可以隨意拼接任何參數,代碼中只寫了獲取返回參數=name和age的值

 2)/query2

用 form 屬性的話得到是一個空字典哦,控制檯輸出結果如下:

 

 3)/query3

用 json 屬性的話得到是一個 None 哦,所以無論如何都不要用 json 獲取 url 請求參數喲!控制檯輸出結果如下:

 

 4)/query4

可以看到 values 屬性也能拿到 url 請求參數哦

 三、獲取表單參數的例子

1、完整代碼

from flask import Flask, request
app = Flask(__name__)

@app.route('/addUser',methods=['POST'])
def check_login():
    return {"name:":request.form['name'],"age":request.form['age']}

@app.route('/addUser2',methods=['POST'])
def check_login2():
    print('form=',request.form)
    print('args=',request.args)
    return "form"

@app.route('/addUser3',methods=['POST'])
def check_login3():
    print('form=',request.form)
    print('json=',request.json)
    return "json"

@app.route('/addUser4',methods=['POST'])
def check_login4():
    return {"name":request.values['name'],"age":request.values['age']}

if __name__ == '__main__':
    app.run(debug = True)

2、請求結果

1)addUser

2)addUser2

 用 args 屬性的話得到是一個空字典哦,控制輸出結果如下:

 

3)addUser3

 用 json 屬性的話得到是一個 None 哦,所以無論如何都不要用 json 獲取 form-data 喲!控制檯輸出結果如下:

 

4)addUser4

可以看到 values 屬性也能拿到 form 表單提交的數據哦

四、獲取json數據的例子 

1、完整代碼

from flask import Flask, request
app = Flask(__name__)

@app.route('/addJson',methods=['POST'])
def check_login():
    return {"name:":request.json['name'],"age":request.json['age']}

@app.route('/addJson2',methods=['POST'])
def check_login2():
    print('json=',request.json)
    print('args=',request.args)
    return "json"

@app.route('/addJson3',methods=['POST'])
def check_login3():
    print('json=',request.josn)
    print('form=',request.form)
    return "json"

@app.route('/addJson4',methods=['POST'])
def check_login4():
    print('json=',request.json,type(request.json))
    print('values=',request.values)
    return {"name":request.json['name'],"age":request.json['age']}

if __name__ == '__main__':
    app.run(debug = True)

2、請求結果

1)addJson

2)addJson2

 用 args 屬性的話得到是一個空字典哦 ,控制檯輸出結果如下:

3)addJson3

用 form 屬性的話得到是一個空字典哦 ,控制檯輸出結果如下:

4)addJson4

當你的請求體是 Json 時,是不能通過 values 來獲取請求數據哦!!request.json 拿到的就是 Json 格式的請求體,並且自動轉換成字典了哦!控制檯輸出結果如下: 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章