我有一个自定义用户模型(MyUser),以及该模型的注册表单(UserCreationForm)。注册用户后,我希望它重定向到主页。但是,它会重定向到主页,但问题是即使在注册视图中使用user
函数后,login()
也未登录,因此会将其重定向回登录页面。 / p>
views.py:
@login_required(login_url='/account/login/')
def home(request):
return render(request, 'home.html')
def login_view(request):
form = LoginForm(request.POST or None)
if request.POST and form.is_valid():
user = form.login(request)
if user:
login(request, user)
return redirect("/")# Redirect to a success page.
return render(request, 'login.html', {'form': form })
def register(request):
if request.method == "POST":
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
return redirect("/")
else:
form = UserCreationForm()
return render(request, 'register.html', {
'form': form
})
它给了我一个错误:
AttributeError at /account/register/
'MyUser' object has no attribute 'backend'
我在这里做错了什么?请帮我解决这个问题。谢谢。
答案 0 :(得分:2)
也许,这可以解决您的问题 这将在注册后进行身份验证并登录用户。
def register(request):
if request.method == "POST":
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
password = self.request.POST.get('password', None)
authenticated = authenticate(
username=user.username,
password=password
)
if authenticated:
login(request, authenticated)
return redirect("/")
else:
form = UserCreationForm()
return render(request, 'register.html', {
'form': form
})