首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-social-auth部分管道无法恢复

python-social-auth部分管道无法恢复
EN

Stack Overflow用户
提问于 2014-01-10 06:08:04
回答 1查看 2.4K关注 0票数 7

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

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

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

settings.py

代码语言:javascript
复制
SOCIAL_AUTH_PIPELINE = (
    ...
    'accounts.pipeline.get_password',
    ...
)

pipeline.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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))
EN

回答 1

Stack Overflow用户

发布于 2014-01-11 03:31:14

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

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

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

管道:

代码语言:javascript
复制
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
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21032255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档