我正在使用Django allauth进行注册和社交认证。对于使用电子邮件注册的用户,他们会根据用户名作为slug正常地重定向到他们的个人资料。例如,像这样:
views.py
class RegisterView(SignupView):
form_class = RegisterForm
template_name = 'oauth/auth_form.html'
def form_valid(self, form):
return redirect('profiles:Index', slug=form.cleaned_data['username'])
用户被重定向到配置文件应用程序,其中包含一个Index视图,该视图根据slug(输入的用户名)显示其配置文件。这是正常的,但是,当我尝试使用Facebook或Google进行社交登录时,它会将我重定向到/ accounts / profile /#,这是默认的Django个人资料页面。我希望将它们重定向到配置文件应用程序,/profiles/{their username}
我怎样才能实现这一目标?
答案 0 :(得分:0)
我认为这个用例/情况在他们的(django-allauth
)文档中有描述。您可以查看here。
基本上你需要使用该功能创建一个自定义适配器类(根据具体情况继承自allauth.account.adapter.DefaultAccountAdapter
或allauth.socialaccount.adapter.DefaultSocialAccountAdapter
)并使用ACCOUNT_ADAPTER
变量指向它设置。
答案 1 :(得分:0)
对于类似错误
AttributeError:“ SocialAccountAdapter”对象没有属性 'is_safe_url'
如果您创建继承allauth.account.adapter.DefaultAccountAdapter
的自定义适配器,请在settings.py中设置ACCOUNT_ADAPTER
。
如果为allauth.socialaccount.adapter.DefaultSocialAccountAdapter
,请在settings.py中设置SOCIALACCOUNT_ADAPTER