2017-01-23 6 views
1

いくつかのログなど、すべてのビューが呼び出される直前に実行したいコードがあります。ピラミッドでは、ビューが呼び出される直前に発生する「フック」はありますか?

ピラミッドでこれを行う方法はありますか?

+1

私が見るDerivers見てきましたが、あなたは、ビューごとのビューでそれらを有効にする必要があり、ときに、各メッセージを自動的にログインする私の目的に反していますビューを変更することなく、ビューが呼び出されます。 –

+0

該当しません。ビュー導出者はすべてのビューをラップします。それぞれのビューを個別にラップして、ビュー単位のオプションを受け入れたり、特定のビューをラップすることを避けることさえできますが、それは自分自身の責任です。 –

答えて

2

両方トゥイーン[1]と[2]のドキュメントを導出手段見ますタイミングコードの例があります。それは実際に測定したいものと、測定を行うときに利用できる情報に依存します。たとえば、トゥイーンはどのビューが実行されたのかわからず、URLだけがわかります。しかし、それはパイプラインの多くを網羅しています。

[1] http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/hooks.html#creating-a-tween

を[2] http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/hooks.html#custom-view-derivers

2

これは、一部のイベントに登録することで可能です。

http://docs.pylonsproject.org/projects/pyramid/en/latest/api/events.html

したい1はおそらくContextFoundです。

あなたはどちらかのデコレータ(http://docs.pylonsproject.org/projects/pyramid/en/latest/api/events.html#pyramid.events.subscriber)で購読することができます:add_subscriberhttp://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html#pyramid.config.Configurator.add_subscriber)と

from pyramid.events import ContextFound 
from pyramid.events import subscriber 

@subscriber(ContextFound) 
def do_something(event): 
    print(event) 
    print(event.request) 

または命令的に:

from pyramid.events import ContextFound 

def main(global_config, **settings): 
    # rest of your config here 
    config.add_subscriber(do_something, ContextFound) 

def do_something(event): 
    print(event) 
    print(event.request) 
関連する問題