TurboGears – 후크
TurboGears에는 기존 애플리케이션 내부의 동작을 연결하는 세 가지 방법이 있습니다.
Hook − 이벤트를 정의하고 이벤트가 발생하면 등록 된 리스너에게 알릴 수있는 메커니즘입니다.
Controller Wrapper− TurboGears와 Controller 사이에 위치하여 데코레이터처럼 컨트롤러를 확장 할 수 있습니다. 따라서 타사 컨트롤러 응용 프로그램에 연결할 수 있습니다.
Application Wrapper − WSGI 미들웨어와 유사하지만 TurboGears 컨텍스트에서만 작동합니다.
이 장에서는 기존 애플리케이션 내에서 후크를 사용하는 방법에 대해 설명합니다.
후크
후크는 애플리케이션의 구성 파일에 등록 된 이벤트입니다. app_cfg.py. 그런 다음 모든 컨트롤러는 이벤트 데코레이터에 의해 이러한 이벤트에 연결됩니다.
다음 후크는 TurboGears에서 정의됩니다.
Sr. 아니. | 후크 및 설명 |
---|---|
1 | Startup() 응용 프로그램 전체에만 해당되며 응용 프로그램이 시작될 때 호출됩니다. |
2 | shutdown() 애플리케이션 전체에만 해당되며 애플리케이션이 종료 될 때 호출됩니다. |
삼 | configure_new_app 응용 프로그램 구성자가 새 응용 프로그램을 생성했습니다. |
4 | before_config(app) 응용 프로그램 전체에만 해당, 응용 프로그램을 만든 직후에 호출되지만 옵션 및 미들웨어를 설정하기 전에 |
5 | after_config(app) 모든 설정을 마친 후 호출됩니다. |
6 | before_validate 유효성 검사를 수행하기 전에 호출 됨 |
7 | before_call 실제 컨트롤러 메서드를 호출하기 전에 유효성 검사 후 호출됩니다. |
8 | before_render 컨트롤러 템플릿을 렌더링하기 전에 호출되는 출력은 컨트롤러 반환 값입니다. |
9 | after_render 컨트롤러 템플릿 렌더링을 마친 후 호출됩니다. |
후크 등록
하기 위해 register a Hook, 함수 생성 app_cfg.py 다음 코드를 사용하여 등록하십시오-
tg.hooks.register(hookane, function, controller)
다음 코드에서 on_startup, on_shutdown 및 before_render 후크는 app_cfg.py에 등록됩니다.
def on_startup():
print 'hello, startup world'
def on_shutdown():
print 'hello, shutdown world'
def before_render(remainder, params, output):
print 'system wide before render'
# ... (base_config init code)
tg.hooks.register('startup', on_startup)
tg.hooks.register('shutdown', on_shutdown)
tg.hooks.register('before_render', before_render)
before_render 후크는 Rootcontroller의 컨트롤러 함수에 등록됩니다. controllers \ root.py에 다음 코드를 추가하십시오.
from tg.decorators import before_render
class RootController(BaseController):
@expose('hello.templates.index')
@before_render(before_render_cb)
def index(self, *args, **kw):
return dict(page = 'index')
애플리케이션이 제공되면 콘솔에 시작 메시지가 표시됩니다.
hello, startup world
Starting Standard HTTP server on http://127.0.0.1:8080
브라우저에 '/'URL을 입력하면 before_render 후크에 해당하는 메시지가 콘솔에 표시됩니다.
system wide before render
Going to render {'page': 'index'}