2009-07-06 13 views

Respuesta

9

Hay una aplicación Django llamada django-debug-toolbar que añade un pequeño barra de herramientas en la parte superior de todas las django páginas da información relacionada con el backend de renderizado de la página, sirvió como el número de consultas fueron ejecutados, la cantidad de tiempo que tomaron cada uno, etc. También imprime señales. No uso señales en mi aplicación, así que nunca he usado esa función, pero está ahí.

27

No está realmente expuesto en documentos, pero Signal es solo una clase que contiene una lista de receptores que se llaman en evento. También puede hacerlo manualmente esta lista:

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

Si desea enumerar solo los receptores conectados para una señal específica en un modelo específico, puede mirar _live_receivers. Por ejemplo, si desea que se muestren los ganchos post_save conectados para un modelo llamado MyModel, que puede hacer:

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

me encontré con este enfoque en el código fuente de Django mediante la búsqueda de la forma en has_listeners obras: https://github.com/django/django/blob/3eb679a86956d9eedf24492f0002de002f7180f5/django/dispatch/dispatcher.py#L153

Cuestiones relacionadas