2013-08-24 5 views
0

Я в настоящее время немного разбираюсь в учебнике Jacko от Hacked Existence. У меня возникают проблемы с пониманием сигналов Джанго участвующихСигналы Django и User Auth

def create_User_callback(sender, instance, **kwargs):     
     a, b = User.objects.get_or_create(user = instance) 

    post_save.connect(create_User_callback, User) 

Я не совсем уверен, что логика

 post_save.connect(create_User_callback, User) 

ответ

2

для того, чтобы обработчик сигнала на работу, вы должны связать его с сигналом , Это делается с использованием метода connect сигнала. В вашем случае сигнал post_save.

connect вызывается с именем метода и модели, для которой будет вызываться метод. Все модели будут излучать post_save, поэтому, когда вы добавите User в качестве второго аргумента в connect, он «фильтрует» сигналы, поэтому только сигнал post_save, испускаемый моделью User, вызовет ваш метод.

Подумайте, как настроить радио для прослушивания на частоте.

Сказав все это, этот фактический код кажется немного бессмысленным. Вы создаете объект (или выбираете его, если он существует) того же класса, который излучает сигнал; после сохранения любого объекта.

+0

Ну, цель этого кода заключается в возможности аутентификации пользователей. Возможно, это должно прояснить ситуацию? На данный момент я все еще изучаю Django. Все это кажется очень запутанным. http://pastebin.com/DvCDzSsV – Liondancer

+0

Для аутентификации используйте [встроенную систему проверки подлинности] (https://docs.djangoproject.com/en/1.5/topics/auth/). –

+0

В качестве примечания: 'connect' хранит ссылку __weak reference__ в обработчике сигналов. Это может привести к сбою мусора в какой-то момент, когда обработчик уйдет, если не ссылается на постоянный объект, такой как модуль. –