1. 程式人生 > >Flask請求與響應

Flask請求與響應

1.變數或物件

變數/物件

上下文

說明

current_app 程式上下文 當前執行的程式例項
g(global的簡寫) 程式上下文 處理請求時用作臨時儲存的物件,專門用來儲存使用者資料,每次請求都會重置,g物件在一次請求中的所有程式碼中都是可以使用的。
request 請求上下文 請求物件,儲存了客戶端的所有的HTTP請求資訊
session 請求上下文 使用者會話,用於儲存需要'記住'的會話資訊

2.請求鉤子函式

from flask imort Flask, g

app = Flask(__name__)

@app.route('/test/')
def test():
    return g.string

#鉤子函式
#第一次請求, 一次性有效
@app.before_first_request
def bf_first_request():
    g.string = 'before_first_request'

#每次請求前
@app.before_request
def bf_request():
    g.string = 'before_request'

函式

描述
before_first_request 第一次請求之前
before_request 每次請求之前
after_request 沒有異常情況下,每次請求之後
teardown_request 每次請求之後,無論是否有異常,常用於關閉資料庫連線

3.檢視函式

帶引數的檢視函式如下

#帶引數的路由,不指定引數型別,預設是字串
@app.route('/hello/<username>')
def hello(username):
    return 'hello %s !' % username

#引數可以指定型別: int float path (/不再是分隔符)
@app.route('/user/<int:uid>/')
def user(uid):
    return '%d號使用者詳細資訊' % uid

@app.route('/path/<path:p>/')
def path(p):
    return p

總結說明

  1. 若指定引數,需要將引數外新增<>,且路由引數名稱要與檢視函式引數一致

  2. 引數可以指定型別,如:int、float、path,不指定預設為字串

  3. 路由中的最後的'/'最好還是加上

請求

@app.route('/request/')
def req():
    # 完整的請求URL
    # return request.url
    # 基本路由資訊,不包含get引數
    #return request.base_url
    # 只包含主機和埠
    #return request.host_url
    # 只包含裝飾器中的路由地址
    #return request.path
    # 請求方法型別
    #return request.method
    # 客戶端IP地址
    #return request.remote_addr
    # 所有的請求引數(GET)
    #return request.args['page']
    # 返回一個列表
    # returen str(request.args.getlist('username'))
    # 請求頭資訊
    return request.headers['User-Agent']