2一、Flask實戰第21天:經常使用的Flask鉤子函數

在Flask中鉤子函數是使用特定的裝飾器裝飾的函數。爲何叫鉤子函數呢?是由於鉤子函數能夠在正常執行的代碼中,插入一段本身想要執行的代碼。那麼這種函數就叫作鉤子函數。html

before_first_request

 部署後處理第一次請求以前執行,當執行第二次的時候,則不會再執行此鉤子函數flask

 

before_request

在每次請求以前執行。一般能夠用這個裝飾器來給視圖函數增長一些變量,好比下面的例子app

 

template_filter

在使用Jinja2模板時候自定義過濾器。函數

@app.route('/')
def index():
    context = {
        'article': 'hello, this is test hello world'
    }
    return render_template('index.html', **context)

@app.template_filter('cut') #把cut函數註冊到過濾器中
def cut(value):   #value就是使用過濾器的變量
    value = value.replace('hello', '')
    return value   #函數的返回值會做爲過濾器的返回值

index.htmlthis

{{ article|cut }}

 

context_processor

使用這個鉤子函數,必須返回一個字典,這個字典的值在全部模板中均可以使用。若是在一些模板中都要用到的變量,那麼就可使用這個鉤子函數來返回,而不用再每一個視圖函數中的render_template中去寫,這樣可讓代碼更加簡潔容易維護。spa

以下:code

a.htmlhtm

{{ name }}

b.html對象

{{ name }}

 查看結果blog

注意:

由於這個鉤子函數必須返回字典,所以當有作條件判斷的時候,無論是True仍是Flase都應該返回字典,就算你什麼數據都不想取,也應該傳一個空字典,不然會報錯不是一個可迭代的對象

@app.context_processor
def context_processpor():
    if xxxxx:
        return {'name': 'heboan'}
    return {}

 

errorhandler

在發生一些異常的時候,好比40四、500、400等錯誤。那麼想要優雅的處理這些錯誤,就可使用errorhandler

訪問首頁(想要看到效果,把DEBUG模式關閉)

訪問不存在的頁面

 

咱們可使用flask.abort手動拋出相應的錯誤,以下

訪問首頁

相關文章
相關標籤/搜索