Flask三之請求與響應

二.請求與響應

一、HTTP方法

GET: 瀏覽器告知服務器:只 獲取 頁面上的信息併發給我。這是最經常使用的方法。
POST: 瀏覽器告訴服務器:想在 URL 上 發佈 新信息。而且,服務器必須確保數
      據已存儲且僅存儲一次。這是 HTML 表單一般發送數據到服務器的方法。

二、程序和請求上下文

請求上下文:flask

from flask import request
@app.route('/useragent/')
def userAgent():
    user_agent = request.headers.get('User-Agent')
    return '<p>Your browser is %s</p>' % user_agent

程序上下文:瀏覽器

from flask import current_app
# print('current_app.name:',current_app.name)
app_ctx = app.app_context()
app_ctx.push()
current_app.name
app_ctx.pop()
沒激活程序上下文以前就調用 current_app.name 會致使錯誤,但推送完上下文
以後就能夠調用了。
注意,在程序實例上調用 app.app_context() 可得到一個程序上下文。也就是說,
有兩種方式來建立程序上下文:
1.第一種是隱式的:不管什麼時候當一個請求上下文被壓棧時, 若是有必要的話一個程
序上下文會被一塊兒建立。因爲這個緣由,你能夠忽略程序上下文的存在,除非你需
要它。
  1. 第二種是顯式地調用 app_context() 方法:服務器

from flask import Flask, current_app
app = Flask(__name__)
with app.app_context():
    # within this block, current_app points to app.
    print current_app.name

三、響應

Flask 調用視圖函數後,會將其返回值做爲響應的內容。cookie

@app.route('/')
def index():
    return '<h1>Bad Request</h1>', 400

視圖函數返回值即爲響應併發

若是不想返回一個元組,Flask視圖函數還能夠返回Response對象。make_response()
函數可接受一或多個參數(和視圖函數的返回值同樣),並返回一個 Response 對
象。有時咱們須要在視圖函數中進行這種轉換,而後在響應對象上調用各類方法,
進一步設置響應。下例建立了一個響應對象:app

from flask import make_response
@app.route('/response/')
def response():
    resp = make_response('<h1>Bad Request</h1>',400)
    return resp

響應的兩種方法: 函數

  1. 視圖函數直接返回一個元組 (response, status, headers)this

  2. 視圖函數返回一個make_resonse()函數產生的響應對象code

四、Cookies

cookies的操做:對象

  1. 經過請求對象的 cookies 屬性來訪問 Cookies。(請求對象的 cookies 屬性是一個
    內容爲客戶端提交的全部 Cookies 的字典。)

  2. 經過響應對象的set_cookie方法來設置 Cookies。

@app.route('/cookie/')
def cookie():
    resp = make_response('set cookie')
    resp.set_cookie('name','myname')
    return resp

五、請求鉤子

請求鉤子使用修飾器實現。 Flask 支持如下 4 種鉤子:

• before_first_request:註冊一個函數,在處理第一個請求以前運行。
• before_request:註冊一個函數,在每次請求以前運行。
• after_request:註冊一個函數,若是沒有未處理的異常拋出,在每次請求以後運行。
• teardown_request:註冊一個函數,即便有未處理的異常拋出,也在每次請求以後運行。
相關文章
相關標籤/搜索