我正在利用django-allauth为我的物业管理应用程序提供Google身份验证。以下是我正在寻找的注册流程:
1. 新管理员进入注册页面,看到“使用Google注册”的按钮。 2. 他们单击该按钮并登录Google。 3. 在从Google返回后,他们将被提示填写其他信息的表格。 4. 当他们提交此表单后,将创建他们的用户帐户和管理员配置文件,并将重定向到其公司的主页。
我尝试通过适配器处理这个“重定向到公司主页”的问题。我遇到的问题是,“get_login_redirect_url”函数在初始Google登录之后执行,但在我收集他们的工作时间表的注册表单之前调用适配器重定向,因此我在适配器重定向时会得到一个DoesNotExist错误,因为它是在managerprofile创建之前调用的。
正确的重定向方式是什么?
1. 新管理员进入注册页面,看到“使用Google注册”的按钮。 2. 他们单击该按钮并登录Google。 3. 在从Google返回后,他们将被提示填写其他信息的表格。 4. 当他们提交此表单后,将创建他们的用户帐户和管理员配置文件,并将重定向到其公司的主页。
我尝试通过适配器处理这个“重定向到公司主页”的问题。我遇到的问题是,“get_login_redirect_url”函数在初始Google登录之后执行,但在我收集他们的工作时间表的注册表单之前调用适配器重定向,因此我在适配器重定向时会得到一个DoesNotExist错误,因为它是在managerprofile创建之前调用的。
正确的重定向方式是什么?
settings.py
ACCOUNT_SIGNUP_FORM_CLASS = 'managers.signup.ManagerProfileSignupForm'
SOCIALACCOUNT_AUTO_SIGNUP = False
SOCIALACCOUNT_ADAPTER = 'managers.adapter.ManagerSocialAccountAdapter'
ACCOUNT_ADAPTER = 'managers.adapter.ManagerAccountAdapter'
adapters.py
class ManagerSocialAccountAdapter(DefaultSocialAccountAdapter):
def get_connect_redirect_url(self, request, socialaccount):
return reverse('company_details', args=(request.user.managerprofile.company.pk,))
class ManagerAccountAdapter(DefaultAccountAdapter):
def get_login_redirect_url(self, request):
return reverse('company_details', args=(request.user.managerprofile.company.pk,))