请求没有上下文的仅用户页面

时间:2014-11-28 17:55:58

标签: django django-admin django-authentication django-users

我有一个登录网页,可以正确验证用户身份。当登录页面接受用户信息并将其发送到默认登录页面时,django会正确获取用户信息并相应地填充页面。

此外,当从另一个django的网页发送到登录页面,或以用户身份登录时,django将自动正确地重定向到默认页面。

但是,在我以标准用户身份登录后,通过在浏览器的地址栏中输入127.0.0.1:8000/login/或链接到此页面进入登录页面, request.user.is_authenticated()始终返回False

为什么会这样?如何以超级用户身份登录时不会发生这种情况?

编辑:

这是views.py中的代码:

if request.user.is_authenticated():
    #redirect to logged in page
if request.method == "POST":
    email = request.POST.get("email_input")
    password = request.POST.get("password_input")

    users = UserProfile.objects.all()  # FIXME: Inefficient GET request

    for user in users:
        if user.user.email == email and check_password(password, user.user.password):
            login(request, authenticate(username=email, password=password))
            #go to logged in page

    return render(request, "login/login.html", {"error_message": "Invalid email/password combination. Please retry",
                                                "email": email})
return render(request, "login/login.html")

1 个答案:

答案 0 :(得分:0)

这是一个有趣的实现。我建议您使用documentation中所述的内容:

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.