2013-08-24 68 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引用___存儲到信號處理程序。如果沒有從模塊等持久化對象中引用,它可能會在某些時候將垃圾回收器渲染爲處理程序。 –