W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
下列是 Flask 中存在的信號(hào):
當(dāng)模板成功渲染的時(shí)候,這個(gè)信號(hào)會(huì)發(fā)出。這個(gè)信號(hào)與模板實(shí)例 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)
這個(gè)信號(hào)在處建立請(qǐng)求上下文之外的任何請(qǐng)求處理開始前發(fā)送。因?yàn)檎?qǐng)求上下文 已經(jīng)被約束,訂閱者可以用 request 之類的標(biāo)準(zhǔn)全局代理訪問 請(qǐng)求。
訂閱示例:
def log_request(sender, **extra):
sender.logger.debug('Request context is set up')
from flask import request_started
request_started.connect(log_request, app)
這個(gè)信號(hào)恰好在請(qǐng)求發(fā)送給客戶端之前發(fā)送。它傳遞名為 response 的響應(yīng)。
訂閱示例:
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)
這個(gè)信號(hào)在請(qǐng)求處理中拋出異常時(shí)發(fā)送。它在標(biāo)準(zhǔn)異常處理生效 之前 ,甚至是 在沒有異常處理的情況下發(fā)送。異常本身會(huì)通過 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)
這個(gè)信號(hào)在請(qǐng)求銷毀時(shí)發(fā)送。它總是被調(diào)用,即使發(fā)生異常。當(dāng)前監(jiān)聽這個(gè)信號(hào) 的函數(shù)會(huì)在常規(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 ,如果有異常的話它會(huì)被傳遞一個(gè) exc 關(guān)鍵字參數(shù)引用導(dǎo)致銷 毀的異常。
這個(gè)信號(hào)在應(yīng)用上下文銷毀時(shí)發(fā)送。它總是被調(diào)用,即使發(fā)生異常。當(dāng)前監(jiān)聽這個(gè)信號(hào) 的函數(shù)會(huì)在常規(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)
如果有異常它會(huì)被傳遞一個(gè) exc 關(guān)鍵字參數(shù)引用導(dǎo)致銷毀的異常。
這個(gè)信號(hào)在應(yīng)用上下文壓入棧時(shí)發(fā)送。發(fā)送者是應(yīng)用對(duì)象。這通常在單元測(cè)試中 為了暫時(shí)地鉤住信息比較有用。例如這可以用來提前在 g 對(duì)象上設(shè)置一些資源。
用法示例:
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
測(cè)試代碼:
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 新版功能.
這個(gè)信號(hào)在應(yīng)用上下文彈出棧時(shí)發(fā)送。發(fā)送者是應(yīng)用對(duì)象。這通常在 appcontext_tearing_down 信號(hào)發(fā)送后發(fā)送。
0.10 新版功能.
這個(gè)信號(hào)在應(yīng)用對(duì)象閃現(xiàn)一個(gè)消息時(shí)發(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號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: