gpt4 book ai didi

python - Django 如果 user.is_authenticated 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:58 24 4
gpt4 key购买 nike

我只是想运行一个简单的 {% if user.is_authenticated %} 。但它总是返回 False

这是我所有的文件。

views.py

from django.shortcuts import render_to_response, redirect
from django.core.urlresolvers import reverse
from django.template import RequestContext
from django.contrib.auth.models import User
from django.http import HttpResponse
from django.contrib.auth.hashers import *
from forms import UserLoginForm
from models import UserLogin

def index(request):
return render_to_response('index.html', context_instance = RequestContext(request))

def login(request):
if request.method == 'POST':
form = UserLoginForm(request.POST or None)
if form.is_valid():
email_from_form = form.cleaned_data['email']
password_from_form = form.cleaned_data['password']
users = User.objects.filter(email = email_from_form)

for j in users:
if j.email == email_from_form:
pass_match = check_password(password_from_form, j.password)
if pass_match:
return redirect(reverse('profile'), context_instance = RequestContext(request))
else:
return HttpResponse('Entered password did not match')
else:
return HttpResponse('Entered email does not exist')
else:
return HttpResponse(form.errors)
else:
form = UserLoginForm()

return render_to_response('login.html', {'form':form}, context_instance = RequestContext(request))


def profile(request):

return render_to_response('profile.html', context_instance = RequestContext(request))

表单.py

from django import forms

class UserLoginForm(forms.Form):
email = forms.EmailField(max_length = 100)
password = forms.CharField(max_length = 100)

模型.py

from django.db import models

class UserLogin(models.Model):
email = models.EmailField(max_length = 100)
password = models.CharField(max_length = 100)

def __unicode__(self):
return self.email

profile.html

<html>
<head>
<title>profile</title>
</head>
<body>
{% if user.is_authenticated %}
Welcome user, you are loged in..
{% else %}
You are not logged in
{% endif %}
</body>
</html>

login.html

<html>
<head>
<title>login</title>
</head>
<body>
<form action="{% url login %}" method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" id="submit" name="submit" value="Login" />
</form>

</body>
</html>

它总是返回您没有登录

我是 django 的新手,我不明白为什么会这样。

最佳答案

您永远不会让您的用户登录。尝试按照以下几行操作:

from django.contrib.auth import authenticate, login as auth_login

if request.method == 'POST':
form = UserLoginForm(request.POST or None)
if form.is_valid():
username = User.objects.get(email=form.cleaned_data['email'])
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user:
if user.is_active:
auth_login(request, user)
return HttpResponseRedirect(request.GET.get('next',
settings.LOGIN_REDIRECT_URL))
else:
error = 'Invalid username or password.'

为清楚起见,已更新为使用您的表格;排除错误检查。

关于python - Django 如果 user.is_authenticated 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13136057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com