2009-07-06 7 views

Antwort

9

Es gibt eine django app django-debug-toolbar genannt, die an der Spitze aller django eine kleine Symbolleiste fügt Seiten Informationen an das Backend der Seite Rendering, wie wie viele Abfragen ausgeführt wurden, wie viel Zeit sie jeweils nahm im Zusammenhang Bereitstellung serviert, usw. Es gibt auch Signale aus. Ich verwende keine Signale in meiner App, also habe ich diese Funktion nie benutzt, aber sie ist da.

27

Es ist nicht wirklich in der Dokumentation ausgesetzt, aber Signal ist nur eine Klasse, die eine Liste von Empfängern enthält, die Ereignis aufgerufen werden. Sie können diese Liste manuell überprüfen:

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 
0

Wenn Sie nur die angeschlossenen Empfänger für ein bestimmtes Signal an einem bestimmten Modell auflisten möchten, können Sie sich _live_receivers ansehen. Zum Beispiel, wenn Sie die angeschlossenen post_save Haken für ein Modell namens MyModel auflisten möchten, können Sie tun:

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

fand ich diesen Ansatz im Code Django Quelle, indem sie nach wie has_listeners Werke: https://github.com/django/django/blob/3eb679a86956d9eedf24492f0002de002f7180f5/django/dispatch/dispatcher.py#L153