2013-08-24 32 views
0

我目前正在关注Hacked Existence的Django教程。我无法理解参与Django信号和用户验证

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

    post_save.connect(create_User_callback, User) 

Django的信号,我不太清楚背后

 post_save.connect(create_User_callback, User) 

回答

2

为了使信号处理工作的逻辑,则需要将其绑定到一个信号。这是通过使用信号的connect方法完成的。在你的情况下,信号是post_save

connect被调用方法的名称和该方法将被调用的模型。所有型号都会发出post_save,因此当您将User作为connect的第二个参数添加时,它会“过滤”这些信号,因此只有User型号发出的post_save信号会触发您的方法。

想象一下,就像调谐收音机来监听频率一样。

说了这么多,这个实际的代码似乎有点没有意义。您正在创建一个正在发射信号的类的对象(或者如果存在的话);任何对象已被保存后。

+0

这段代码的目标是能够验证用户。也许这应该把事情搞清楚?我现在还在学习Django。这一切似乎都很混乱 http://pastebin.com/DvCDzSsV – Liondancer

+0

要进行身份验证,请使用[内置身份验证框架](https://docs.djangoproject.com/en/1.5/topics/auth/)。 –

+0

作为旁注:'connect'将__weak引用___存储到信号处理程序。如果没有从模块等持久化对象中引用,它可能会在某些时候将垃圾回收器渲染为处理程序。 –