Herramientas de usuario

Herramientas del sitio


fw:djangoadv

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
fw:djangoadv [2014/06/02 16:58]
alfred [Signals in Django]
fw:djangoadv [2020/05/09 09:25] (actual)
Línea 103: Línea 103:
  
 ==== Defining and sending signals ==== ==== Defining and sending signals ====
 +Signals are ''​django.dispatch.Signal([providing_args=list])''​ instances. ''​providing_args''​ is a list of the names of arguments the signal will provide to listeners. To declare a ''​pizza_done''​ signal which provides receivers with toppics and size arguments:
 +<code python>
 +import django.dispatch
 +pizza_done = django.dispatch.Signal(providing_args=["​toppings",​ "​size"​])
 +</​code>​
  
 +To send a signal, call either ''​Signal.send()''​ or ''​Signal.send_robust()''​. Both return a list of tuple pairs ''​[(receiver,​ response), ... ]''​. They differ in how exceptions raised by receiver functions. ''​send()''​ does not catch any exceptions raised by receivers; it simply allows errors to propagate. Whereas ''​send_robust()''​ catches all errors derived from Python’s Exception class, and ensures all receivers are notified of the signal. ​
 +<code python>
 +class PizzaStore(object):​
 +    ...
 +    def send_pizza(self,​ toppings, size):
 +        pizza_done.send(sender=self.__class__,​ toppings=toppings,​ size=size)
 +</​code>​
 +To disconnect a receiver from a signal, call ''​Signal.disconnect()''​.
fw/djangoadv.1401728331.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)