如何在AllAuth社交帐户注册上执行自定义重定向

时间:2020-06-14 17:28:42

标签: django django-allauth

我尝试执行以下操作,但是既不重定向也不呈现作品:

from allauth.socialaccount.adapter import DefaultSocialAccountAdapter, get_account_adapter
from allauth.account.adapter import DefaultAccountAdapter

from django.shortcuts import render

class SocialAccountAdapter(DefaultSocialAccountAdapter):
    def __init__(self, request=None):
        DefaultSocialAccountAdapter.__init__(self, request)

    def save_user(self, request, sociallogin, form=None):
        """
        Saves a newly signed up social login. In case of auto-signup,
        the signup form is not available.
        """
        print('saving user')
        u = sociallogin.user
        u.set_unusable_password()
        if form:
            get_account_adapter().save_user(request, u, form)
        else:
            get_account_adapter().populate_username(request, u)
        sociallogin.save(request)
        print('right before redirect')
        return render(request, 'accounts/signup.html',
                      context={'title': 'Edit Profile', 'register_update': 'Update'})

只有ImmediateHttpResponse(redirect('url'))有效,但是随后它重定向到登录页面。 信号也不起作用。

1 个答案:

答案 0 :(得分:0)

糟糕...我已经找到了解决自己问题的方法...

只需在views.py中的处理器视图中创建登录,就像这样:

def sign_in_processor(request):
    user = request.user
    required = [#User Fields that were not filled up by the social provider on creation]
    for f in required:
        if not f:
            return redirect('profile_edit')
    return redirect('home')

'profile_edit'是基于UserChangeForm或其衍生词中的django.contrib.auth.forms的视图。