成功注册后,以登录用户的身份重定向到主页

时间:2015-10-09 15:05:23

标签: django django-models django-views

我有一个自定义用户模型(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'

我在这里做错了什么?请帮我解决这个问题。谢谢。

1 个答案:

答案 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
    })