我正在尝试设置allauth,以便当用户成功签约,他们将被重定向回页面他们签约前和会自动记录Django的:user.is_authenticated注册后假,allauth
。我有使用自定义帐户适配器的重定向工作。但是他们没有登录。奇怪的是,allauth会将“成功登录为X”添加到消息中。在模板中检查{% if request.user.is_authenticated %}
返回false,对于is_active
也是如此。我需要去和手动登录
我对allauth设置:
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "optional"
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_SIGNUP_FORM_CLASS = 'main.forms.SignupForm'
LOGIN_REDIRECT_URL = '/'
ACCOUNT_PRESERVE_USERNAME_CASING = True
ACCOUNT_ADAPTER = 'main.adapters.MyAccountAdapter
adapters.py
class MyAccountAdapter(DefaultAccountAdapter):
def get_login_redirect_url(self, request):
path = request.POST.get('next', '/')
return path.format(username=request.user.username)
{{ request.user }}
回报AnonymousUser
forms.py
class SignupForm(forms.Form):
password1 = forms.CharField(widget=forms.PasswordInput)
password2 = forms.CharField(widget=forms.PasswordInput)
def signup(self, request, user):
reviewer = Reviewer()
reviewer.user = user
reviewer.user.email = self.cleaned_data['email']
reviewer.user.password = self.cleaned_data['password1']
reviewer.user.username = self.cleaned_data['username']
reviewer.save()
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
尽管重定向仍然按预期工作,但调试看起来不像我的自定义帐户适配器曾运行过。
好吧,想出了重定向作品的预期,因为我提供了我的表格中的'下一个'字段,其中allauth使用。
更新
单步调试代码,看起来像request.user
穿过allauth代码罚款,is_authenticated
和is_active
都是真实的。它传递给Django中间件,它仍然如预期的那样创建了一个响应。然后我相信有另一个重定向正在发生,并且在request
对象到达用户从request.user
注册的用户页面的视图已经被刷新并且现在是AnonymousUser
的页面的视图时。