1
LoginForm的在forms.py用户匹配查询不鉴于存在登录表单
class LoginForm(forms.Form):
username = forms.CharField(label='Username', max_length=30)
password = forms.CharField(
label='Password',
widget = forms.PasswordInput(),
)
def clean_username(self):
username = self.cleaned_data['username']
try:
User.objects.get(username = username)
user.objects.get(username = username)
except ObjectDoesNotExist:
raise forms.ValidationError('Invalid Username or Password!')
def clean_password(self):
password1 = self.cleaned_data['password']
username = self.cleaned_data['username']
user = User.objects.get(username = username)
password2 = user.password
if user.check_password(password1):
return password1
else:
raise forms.ValidationError('Invalid Username or Password!')
login_page在views.py
def login_page(request):
template = get_template('login_page.html')
if request.method == 'POST':
form = LoginForm(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:
login(request, user)
return HttpResponseRedirect('/user/username')
else:
form = LoginForm()
variables = RequestContext(request, {
'form': form
})
return render_to_response('login_page.html', variables)
login_page.html模板
{% extends "base.html" %}
{% block title %}User Login{% endblock %}
{% block head %}User Login{% endblock %}
{% block content %}
{% if form.has_errors %}
<p>Your username and password didn't match.
Please try again.</p>
{% endif %}
<form method="post" action=".">
<p><label for="id_username">Username:</label>
{{ form.username }}</p>
<p><label for="id_password">Password:</label>
{{ form.password }}</p>
<input type="submit" value="login" />
<input type="hidden" name="next" value="/" />
</form>
{% endblock %}
上面的视图当从调用localhost:8000/login/产生一个用户匹配查询不存在错误。我无法准确感觉到原因。我正在使用Django 1.8使用的默认身份验证系统。
我是Django的新手。请帮助我。
请注意,您不必编写自己的登录表单和视图。 Django内置['login'](https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.views.login)视图,它使用内置的['' AuthenticationForm'](https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-django.contrib.auth.forms)。 – Alasdair
不,你**不能**自己做这个。这是非常不安全的。 **不要**。 –
是的。阅读并更改它。谢谢:D –