• 22 Май
  • 2015
Django custom signals для нубов

Рано или поздно приходится менять поведение тех или иных сигналов в вашем проекте. Но наибольшее удовольствие доставляют кастомные сигналы, которые могут существенно расширить функционал приложения и сделать его еще более удобным.

Инструкция


# signals.py
from django.dispatch import Signal

my_signal = Signal(providing_args=["request"])


def my_signal_handler(sender, **kwargs):
    # do something


my_signal.connect(my_signal_handler)


#views.py
signals.my_signal.send(sender=None, request=request)

Что мы сделали? Создали файл signals.py в котором объявили сигнал my_signal. Потом написали обработчик этого сигнала my_signal_handler. И, наконец, приконнектили хендлер к сигналу.

Теперь в нужном месте, например во вьюхе (views.py) вызываем этот сигнал, передавая ему необходимые параметры.

comments powered by Disqus