【发布时间】:2018-07-24 15:19:20
【问题描述】:
//forms.py :
//这是我的应用程序的表单部分。
from django import forms
from django.contrib.auth import (
authenticate,
login,
get_user_model,
logout,
)
User=get_user_model()
class UserLoginForm(forms.Form):
username=forms.CharField()
password=forms.CharField(widget=forms.PasswordInput)
def clean(self):
username=self.cleaned_data.get('username')
password=self.cleaned_data.get('password')
user=authenticate(username=username,password=password)
if not user:
raise forms.ValidationError("This user does not exist")
if not user.check_password(password):
raise forms.ValidationError("Incorrect password")
if not user.is_active:
raise forms.ValidationError("This user is no longer active")
return super(UserLoginForm,self).clean()
// views.py :
//views部分在哪里,我使用了表单中创建的UserLoginForm。
from django.shortcuts import render
from django.contrib.auth import (
authenticate,
login,
get_user_model,
logout,
)
from .forms import UserLoginForm
def login_view(request):
if request.method=='POST':
form=UserLoginForm(request.POST or None)
if form.is_valid():
username=form.cleaned_data.get("username")
password=form.cleaned_data.get("password")
return render(request,"accounts/home.html")
else:
form=UserLoginForm()
return render(request,"accounts/login.html",{"form":form})
def register_view(request):
return render(request,"form.html",{})
def logout_view(request):
return render(request,"form.html",{})
//login.html :
//login.html 作为主页打开。
<div>
<form method='POST' action=''>{% csrf_token %}
<input type="text" name="username" placeholder="Username"/>
<input type="password" name="password" placeholder="Password"/>
<input type="submit" value="Login"/>
</form>
</div>
没有错误,但是在无效的 //stuff 上既不会显示引发错误,也不会在有效用户上重定向到 home.html。请帮我解决问题。我找不到问题。
【问题讨论】:
标签: django authentication django-forms django-views django-login