django - 将第二个注册屏幕添加到社交注册 allauth

标签 django django-allauth

我正在使用 django allauth 身份验证系统,我使用带有“next”参数的社交注册,如下所示:

<a data-provider="facebook"
   href="{% provider_login_url "facebook" method="oauth2" next=next %}">

其中 next 是一个动态变量。

但是,我想为该过程注入(inject)第二个屏幕,询问电话号码或其他信息。

我想我需要重写一个方法来重定向到第二个屏幕并将下一个参数传递给这个 View 。

知道要覆盖哪种方法吗?

编辑:
我想出了如何为“正常”注册流程做到这一点:

我覆盖了 allauth.account.views.SignupView 并添加了一个新方法:
class CustomSignupView(SignupView):
    def get_success_url(self):
        next_value = (get_next_redirect_url(self.request,
                                            self.redirect_field_name)
                      or self.success_url)
        ret = 'whatever/url?next=' + next_value
        return ret

signup = CustomSignupView.as_view()

然后将自定义 View 添加到我自己的帐户/注册 url 文件中。

但是我在 中找不到该方法社交 注册 View 。有人知道在社交注册 View 中评估下一个参数的位置吗?

编辑2:

所以我做了一些挖掘。该标志用于 sociallogin 类方法:
@classmethod
def state_from_request(cls, request):
    if next_url:
        state['next'] = next_url
    return state

之后,它通过提供者传递给帮助者 complete_social_login 或 complete_social_signup (尚不确定何时调用)。

最后有一个函数 account/utils perform_login 实际执行重定向。

目前还不确定在哪里覆盖,仍在挖掘。

所以最后是:

socialaccount View 调用 helpers.complete_social_signup,然后使用重定向 url 调用完整注册。

我认为我必须覆盖该 View ,然后通过我自己的完整社交注册方法。

编辑3:

如果您启用了自动注册(我这样做),则永远不会调用 SocialSignup ClassView,而是在 socialaccount.helpers._process_signup 中创建新用户。

最佳答案

结束了 forking django-allauth 并简单地为一个名为 ACCOUNT_SIGNUP_REDIRECT 的可调用对象添加一个设置。

def custom_signup_redirect(success_url):
    ret = '/whatever/url/?next=' + success_url
    return ret

然后在设置中:
ACCOUNT_SIGNUP_REDIRECT = 'myapp.utils.custom_signup_redirect'

this犯罪。

关于django - 将第二个注册屏幕添加到社交注册 allauth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42040601/

相关文章:

django allauth 自定义注册表单来分配不同的组

python - Django allauth 访问 View

python - 自定义适配器和 django-allauth 的问题

django - 在空 ImageField 上过滤查询集

Django 模板扩展标签在顶部添加了额外的空间

python - 编写用于检查新用户创建的 Django 注册表单测试

Django:OWASP 推荐的属性中额外的 HTML 字符转义

django - 导入错误 : No module named local

django - 在社交登录期间禁用 django allauth 确认电子邮件

python - Django Allauth 自定义登录不显示错误