3
所以我要通過基本瓶教程,並期待在他們的代碼有此片段:現在Flask如何知道要調用哪個裝飾函數?
@app.teardown_appcontext
def close_db_connection(exception):
"""Closes the database again at the end of the request."""
top = _app_ctx_stack.top
if hasattr(top, 'sqlite_db'):
top.sqlite_db.close()
,爲我自己的手冊中讀過,函數「app.teardown_appcontext」之稱每當一個回調有意想不到的行爲。使用它來裝飾功能可以讓您將功能添加到原始功能。或者至少這是我從裝飾者瞭解到的。但是,如果我這樣做:
@app.teardown_appcontext
def stack_overflow_rocks(exception):
"""Closes the database again at the end of the request."""
top = _app_ctx_stack.top
if hasattr(top, 'sqlite_db'):
top.sqlite_db.close()
它仍然有效。 Flask如何管理這個?
我的猜測是,當我運行帶有所有主代碼的「flaskr.py」文件時,它將任何裝飾函數與其代碼關聯起來,以便在必要時調用它。我嘗試閱讀很多關於裝飾器的來源,看看我的解釋是錯誤的,但是找不到任何錯誤。
很好的解釋,一切都有意義。謝謝! – dccarmo 2013-05-14 15:16:56