Django和Python-Social-Auth重定向,如果我做自定义管道

时间:2014-10-13 09:28:15

标签: python django python-social-auth

这是我项目的目录:

/handshakeapp:
    templates/
    __init__.py
    admin.py
    models.py
    pipelines.py
    views.py
/VKHandshake:
    __init__.py
    settings.py
    urls.py
    ...
manage.py

这是settings.py

的一部分
SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details',
    'handshakeapp.pipelines.fill_extendeduser'
)

这是handshakeapp/pipelines.py

from models import ExtendedUser

def fill_extendeduser(strategy, details, user=None, is_new=False, *args, **kwargs):
    if user and is_new:
        user.extendeduser_set.create(user=user.get_username(), countingID=None, profilePic='http://localhost:8000/pic.png')

但每次尝试使用Social Auth登录时,它都会重定向到/accounts/login/。如果我从SOCIAL_AUTH_PIPELINE中删除'handshakeapp.pipelines.fill_extendeduser',则此功能正常。怎么了?

1 个答案:

答案 0 :(得分:1)

问题出在fill_extendeduser函数中。它提出了一个例外,如@omab所述:

  

Django auth进程将占用异常并重定向到LOGIN_URL的值,默认情况下为/ accounts / login /。因此,在代码周围添加一个try / except块,以检查它是否引发任何错误。