django.contrib.auth.views.login返回匿名用户

时间:2015-08-05 06:50:53

标签: django django-authentication

我想在注册后登录我的用户,但在致电login(request, user)时,request.user仍然是AnonymousUser。

def register(request):
    if request.method=='POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data['username']
            pwd = form.cleaned_data['password1']
            user = authenticate(username=username, password=pwd)
            if user is not None and user.is_active:
                auth_views.login(request, user)
            return redirect('/')
    else:
        form = RegistrationForm()

    return render(request, 'registration.html', {'form' : form})

在我自己的登录方法中调用login时,它的工作正常。但是在

`register` view not:
def login(request):
    if request.method=="POST":
        form = AuthenticationForm(data=request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user = authenticate(username=username, password=password)
            if user is not None and user.is_active:
                auth_views.login(request, user)
                return redirect(reverse('chat'))
            else:
                return redirect('/')
    else:
        form = AuthenticationForm()

    return render(request, 'login.html', {'form':form})

2 个答案:

答案 0 :(得分:2)

尝试:

from django.contrib.auth import authenticate, login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            # Redirect to a success page.
        else:
            # Return a 'disabled account' error message
            ...
    else:
        # Return an 'invalid login' error message.
        ...

并检查您的会话设置

答案 1 :(得分:0)

您是否记得在设置文件中定义Auth用户?如果没有,您应该将以下行添加到settings.py:

AUTH_USER_MODEL = 'your_app.your_usermodel'