Посты с тэгом signals


django.dispatch.receiver - FTW!

Думаю, долгое время, каждый из нас присоединял сигналы к событиям при помощи старого доброго connect метода, например как:

from django.contrib.auth.models import User
from django.db.models import signals

...

signals.post_save.connect(auto_create_user_profile, sender=User)

Однако с выходом Django 1.3 ситуация поменялась. Сейчас достаточно задекорировать функцию сигнала, в нашем случае auto_create_user_profile, с помощью @receiver декоратора:

from django.contrib.auth.models import User
from django.dispatch import receiver

...

@receiver(signals.post_save, sender=User)
def auto_create_user_profile(instnance, **kwargs):
    ...

И все, готово! Согласитесь, удобней и легче чем раньше.

зы. Удачного рефакторинга! ;)



Django signals по-новому

На пути к 1.0 релизу Django претерпевал немало радикальных изменений. Одно из них рефакторинг системы сигналов.

Если вы первый раз читаете и не в курсе «что это такое и с чем его едят», то скажу в двух словах. Это система реагирования на события приложения. Любой JavaScript или прикладной UI программист хорошо знаком с системой событий (event) — клик мышкой, нажатие горячей клавиши и т.п. Для программистов серверной части веба все выглядит немного по другому. Есть HTTP-запрос и есть его обработчик, анализируется как правило URL на предмет «кому отправлять запрос». Но на самом деле это та же система сигналов-событий, только узкопрофилированная под обработку HTTP-запросов.

Оказывается серверная часть веб-приложения тоже может, и я уверен, просто должна генерировать намного больший спектр сигналов, чем просто обработку URL и данных запроса. С чем успешно и справляется Django. Теперь немного прозы