2017-09-02 82 views
0

我想從我的管道稱爲以下模塊:Django的Allauth管道不會被調用

def add_account(backend, details, response, user=None, is_new=False, *args, **kwargs): 
    print ("testing") 
    if is_new: 
     Account.objects.create(id=user.id) 

在我的settings.py我的管道設置爲:

SOCIAL_AUTH_PIPELINE = (
'social_auth.backends.pipeline.social.social_auth_user', 
'social_auth.backends.pipeline.user.get_username', 
'social_auth.backends.pipeline.user.create_user', 
'Credit_Ledger.pipeline.add_account' 
'social_auth.backends.pipeline.social.associate_user', 
'social_auth.backends.pipeline.social.load_extra_data', 

「social_auth.backends.pipeline.user.update_user_details」, )

回答

0

必須更換存在create_user管道,如果你想自定義用戶創建的行爲,但你的代碼看起來奇怪,如果你甲腎上腺素編輯只是改變默認的用戶模型,那麼它是多餘的,你只需設置AUTH_USER_MODEL就是這樣。有關詳細信息,

SOCIAL_AUTH_PIPELINE = (
    'social_auth.pipeline.social_auth.social_details', 
    'social_auth.pipeline.social_auth.social_uid', 
    'social_auth.pipeline.social_auth.auth_allowed', 
    'social_auth.pipeline.social_auth.social_user', 
    'social_auth.pipeline.user.get_username', 
    'social_auth.backends.pipeline.user.create_user', 
    'accounts.pipeline.save_profile', # here is new pipeline behavior 
    'social_auth.pipeline.social_auth.associate_user', 
    'social_auth.pipeline.social_auth.load_extra_data', 
    'social_auth.pipeline.user.user_details', 
) 

如果你需要提取新用戶的一些額外的數據,再加入這樣的事情:

def save_profile(backend, user, response, *args, **kwargs): 
    if backend.name == "facebook": 
     save_facebook_profile(user, response, **kwargs) 

    elif backend.name == "google-oauth2": 
     save_google_profile(user, response, **kwargs) 

    else: 
     return # Unspecified backend 

    user.social = True 
    user.save() 


def save_google_profile(user, response, **kwargs): 
    if response.get("image"): 
     if not user.avatar_image and not user.avatar_url: 
      user.avatar_url = response.get("image").get("url") 

    # Handle other fields 

,並在設定http://python-social-auth-docs.readthedocs.io/en/latest/pipeline.html

+0

我不知道如何替換默認的create_user管道。我也沒有在文檔中看到它。 –

+0

只需查看create_user的默認create_user實現並創建自己:https://github.com/python-social-auth/social-core/blob/master/social_core/pipeline/user.py#L64 –

+0

我該如何確保它只有在創建用戶時纔會被調用 –