【问题标题】:python-social-auth partial pipeline can not resumepython-social-auth 部分管道无法恢复
【发布时间】:2014-01-28 17:08:28
【问题描述】:

我正在尝试使用 python-social-auth 的部分管道收集新用户的密码。由于某些未知原因,我无法恢复管道,提交表单后页面呈现回密码收集页面。

连线的是,即使我输入了 http.../complete/backend-name,页面也会重定向回密码收集页面。看起来渲染进入了一个死循环,密码收集页面首先指向完整页面,完整页面直接返回密码收集页面。我检查了 REDIRECT_FIELD_NAME 的值,它是“下一个”。

我不确定我的代码有什么问题,非常感谢任何提示/建议。

settings.py

SOCIAL_AUTH_PIPELINE = (
    ...
    'accounts.pipeline.get_password',
    ...
)

管道.py

from django.shortcuts import redirect
from social.pipeline.partial import partial

@partial
def get_password(strategy, details, user=None, is_new=False, *args, **kwargs):
    if is_new:
        return redirect('accounts_signup_social')
    else:
        return

views.py

def get_password(request):
    if request.method == 'POST':
        request.session['password'] = request.POST.get('password')
        backend = request.session['partial_pipeline']['backend']
        return redirect('social:complete', backend=backend)
    return render_to_response('accounts/social_signup.html',{"form":SocialSignUpForm}, RequestContext(request))

【问题讨论】:

    标签: django python-social-auth


    【解决方案1】:

    好的。我找到了问题和解决方案。

    正如文档中所说,“管道将在与流程相同的功能中恢复。”在http://python-social-auth.readthedocs.org/en/latest/pipeline.html。这意味着它将始终呈现回相同的功能。

    解决方案是在管道中添加密码的会话检查。如果密码已存档,则返回下一个管道:

    管道:

    from django.shortcuts import redirect
    from social.pipeline.partial import partial
    
    @partial
    def get_password(strategy, details, user=None, is_new=False, *args, **kwargs):
        if is_new:
            if 'password' in kwargs['request'].session:
                return {'password': kwargs['request'].session['psssword']}
            else:
                return redirect('accounts_signup_social')
        else:
            return
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多