2009-07-06 15 views

答えて

9

Djangoのアプリがありますが、すべてのジャンゴの上部にある小さなツールバーは、そのような彼らそれぞれがかかったどのくらいの時間、どのように多くのクエリを実行されたとして、ページのレンダリングのバックエンドに関連する情報を提供するページを務め追加した django-debug-toolbarと呼ばれますまた、信号を出力します。私は私のアプリで信号を使用しないので、私はその機能を使用したことはありませんが、そこにあります。

27

実際にはドキュメントには公開されていませんが、Signalはイベントで呼び出される受信者のリストを含むクラスです。手動でこのリストを確認することができます。

from django.db.models.signals import * 

for signal in [pre_save, pre_init, pre_delete, post_save, post_delete, post_init, post_syncdb]: 
    # print a List of connected listeners 
    print signal.receivers 
7

は、私はすべての信号のリスナーを示し、ほとんどのコマンドを書いた:https://gist.github.com/1264102

あなたは信号のみを表示するように変更することができます。

0

特定のモデルの特定の信号に接続されている受信機のみを一覧表示する場合は、_live_receiversを参照してください。たとえば、あなたがmymodelという名前のモデルの接続post_saveフックを一覧表示したい場合は、あなたが行うことができます:https://github.com/django/django/blob/3eb679a86956d9eedf24492f0002de002f7180f5/django/dispatch/dispatcher.py#L153

from django.db.models.signals import post_save 
from models import MyModel 
print(post_save._live_receivers(MyModel)) 

私はどのようにhas_listeners作品を探すことにより、Djangoのソースコードに、このアプローチを見つけました

関連する問題