我正在嘗試設置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
的頁面的視圖時。