W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
下列是 Flask 中存在的信號:
當模板成功渲染的時候,這個信號會發(fā)出。這個信號與模板實例 template 和上下文的字典(名為 context )一起調(diào)用。
訂閱示例:
def log_template_renders(sender, template, context, **extra):
sender.logger.debug('Rendering template "%s" with context %s',
template.name or 'string template',
context)
from flask import template_rendered
template_rendered.connect(log_template_renders, app)
這個信號在處建立請求上下文之外的任何請求處理開始前發(fā)送。因為請求上下文 已經(jīng)被約束,訂閱者可以用 request 之類的標準全局代理訪問 請求。
訂閱示例:
def log_request(sender, **extra):
sender.logger.debug('Request context is set up')
from flask import request_started
request_started.connect(log_request, app)
這個信號恰好在請求發(fā)送給客戶端之前發(fā)送。它傳遞名為 response 的響應。
訂閱示例:
def log_response(sender, response, **extra):
sender.logger.debug('Request context is about to close down. '
'Response: %s', response)
from flask import request_finished
request_finished.connect(log_response, app)
這個信號在請求處理中拋出異常時發(fā)送。它在標準異常處理生效 之前 ,甚至是 在沒有異常處理的情況下發(fā)送。異常本身會通過 exception 傳遞到訂閱函數(shù)。
訂閱示例:
def log_exception(sender, exception, **extra):
sender.logger.debug('Got exception during processing: %s', exception)
from flask import got_request_exception
got_request_exception.connect(log_exception, app)
這個信號在請求銷毀時發(fā)送。它總是被調(diào)用,即使發(fā)生異常。當前監(jiān)聽這個信號 的函數(shù)會在常規(guī)銷毀處理后被調(diào)用,但這不是你可以信賴的。
訂閱示例:
def close_db_connection(sender, **extra):
session.close()
from flask import request_tearing_down
request_tearing_down.connect(close_db_connection, app)
從 Flask 0.9 ,如果有異常的話它會被傳遞一個 exc 關鍵字參數(shù)引用導致銷 毀的異常。
這個信號在應用上下文銷毀時發(fā)送。它總是被調(diào)用,即使發(fā)生異常。當前監(jiān)聽這個信號 的函數(shù)會在常規(guī)銷毀處理后被調(diào)用,但這不是你可以信賴的。
訂閱示例:
def close_db_connection(sender, **extra):
session.close()
from flask import request_tearing_down
appcontext_tearing_down.connect(close_db_connection, app)
如果有異常它會被傳遞一個 exc 關鍵字參數(shù)引用導致銷毀的異常。
這個信號在應用上下文壓入棧時發(fā)送。發(fā)送者是應用對象。這通常在單元測試中 為了暫時地鉤住信息比較有用。例如這可以用來提前在 g 對象上設置一些資源。
用法示例:
from contextlib import contextmanager
from flask import appcontext_pushed
@contextmanager
def user_set(app, user):
def handler(sender, **kwargs):
g.user = user
with appcontext_pushed.connected_to(handler, app):
yield
測試代碼:
def test_user_me(self):
with user_set(app, 'john'):
c = app.test_client()
resp = c.get('/users/me')
assert resp.data == 'username=john'
0.10 新版功能.
這個信號在應用上下文彈出棧時發(fā)送。發(fā)送者是應用對象。這通常在 appcontext_tearing_down 信號發(fā)送后發(fā)送。
0.10 新版功能.
這個信號在應用對象閃現(xiàn)一個消息時發(fā)送。消息作為 message 命名參數(shù)發(fā)送, 分類則是 category 參數(shù)。
訂閱示例:
recorded = []
def record(sender, message, category, **extra):
recorded.append((message, category))
from flask import message_flashed
message_flashed.connect(record, app)
0.10 新版功能.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: