python-social-auth中的social.actions.do_complete无法正常工作

3

我正在尝试使用python-social-auth添加电子邮件验证。

文档上说:

表单提交应该发送到/complete/email,或者如果它发送到您的视图,则您的视图应该调用social.actions.do_complete来完成该过程

在我的情况下,表单将进入我的自定义视图,并且最后我应该调用do_complete。我进行了大量搜索,但找不到有关此方法的任何文档。我查看了源代码,定义如下:

def do_complete(backend, login, user=None, redirect_name='next',
            *args, **kwargs)

但是我该如何在Django视图中将后端、登录(什么是登录?)等参数全部传递给这个方法呢?

1个回答

2
您可以手动加载后端,如下所示:
from social.apps.django_app.utils import load_strategy, load_backend
strategy = load_strategy(self.request)
backend = load_backend(strategy, 'username', "social:complete")

在后端中,username 是用户名,然后像这样调用 do_complete

do_complete(backend, login, user)

其中,backend 是您之前获取的后端,login 是登录函数(请查看 social.apps.django_app.views 中的 _do_login 函数),user 是您在视图中创建/验证等的用户实例。

希望这能帮助未来的某个人。


在我刚使用的版本(3.1.0)中,load_strategy和load_backend可以在social_django.utils中找到。 - ScottieMc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接