【发布时间】:2017-06-26 12:45:07
【问题描述】:
还有其他几个类似的问题有答案,但没有一个能解决我的问题。每次我尝试通过在 Django 中注册来创建新用户时,我都会收到“您配置了多个身份验证后端,因此必须提供 backend 参数或在用户上设置 backend 属性”。这是我的看法:
def signupUser(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
form.save(commit=False)
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
form.save()
user.backend = 'django.contrib.auth.backends.ModelBackend'
login(request, user)
return redirect('home')
else:
form = SignUpForm()
return render(request, 'signup.html', {'form': form})
我添加了user.backend = 'django.contrib.auth.backends.ModelBackend',希望能解决这个问题,但它什么也没做。
我的forms.py:
class SignUpForm(UserCreationForm):
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')
password1=forms.CharField(help_text='Your password cant be too similar to your other personal information. Your password must contain at least 8 characters. Your password cant be a commonly used password. Your password cant be entirely numeric.', widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
顺便说一句,在我的 AUTHENTICATION_BACKENDS 中是 'django.contrib.auth.backends.ModelBackend' 和 'allauth.account.auth_backends.AuthenticationBackend',
【问题讨论】:
-
把它放在
settings.py中,而不是在你的视图中。 -
Erip,我已经在我的设置文件中定义了多个后端。
-
添加完整的堆栈跟踪
标签: python django authentication