gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:03:14 25 4
gpt4 key购买 nike

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

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

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

设置.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

View .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))

最佳答案

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

正如文档所述,“管道将在中断进程的同一函数中恢复。”在http://python-social-auth.readthedocs.org/en/latest/pipeline.html 。这意味着它总是会渲染回相同的函数。

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

管道:

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

关于django - python-social-auth 部分管道无法恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21032255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com