Python django不显示表单错误
当用户试图使用错误信息登录/注册时,我试图显示错误 我有此代码,但浏览器中不显示错误 我在学习Django时完成的另一个项目中编写了这段代码,但现在它不起作用了 她的是我项目的代码 views.py:Python django不显示表单错误,python,django,Python,Django,当用户试图使用错误信息登录/注册时,我试图显示错误 我有此代码,但浏览器中不显示错误 我在学习Django时完成的另一个项目中编写了这段代码,但现在它不起作用了 她的是我项目的代码 views.py: def loginPage(request): if request.user.is_authenticated: return redirect('/') form = loginForm(request.POST or None) if form.is
def loginPage(request):
if request.user.is_authenticated:
return redirect('/')
form = loginForm(request.POST or None)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('/')
content = {
"form": loginForm,
"title": "Login",
}
return render(request, 'login.html', content)
#---------------------------------------------
def registerPage(request):
if request.user.is_authenticated:
return redirect('/')
form = registerForm(request.POST or None)
content = {
"form": registerForm,
"title": "Register",
}
if form.is_valid():
username = form.cleaned_data.get('username')
email = form.cleaned_data.get('email')
password = form.cleaned_data.get('password')
password2 = form.cleaned_data.get('password2')
User.objects.create_user(username=username, email=email, password=password)
return redirect('/')
return render(request, 'register.html', content)
forms.py:
class loginForm(forms.Form):
username = forms.CharField(widget=forms.TextInput(attrs={
"class": "form-control",
}))
password = forms.CharField(widget=forms.PasswordInput(attrs={
"class": "form-control",
}))
class registerForm(forms.Form):
username = forms.CharField(widget=forms.TextInput(attrs={
"class": "form-control",
}))
email = forms.EmailField(widget=forms.EmailInput(attrs={
"class": "form-control",
}))
password = forms.CharField(widget=forms.PasswordInput(attrs={
"class": "form-control",
}))
password2 = forms.CharField(widget=forms.PasswordInput(attrs={
"class": "form-control",
}), label='Password Confirm')
def clean_username(self):
user_name = self.cleaned_data.get("username")
user_exists = User.objects.filter(username=user_name).exists()
if user_exists:
raise forms.ValidationError("Username is in user")
return user_name
def clean_email(self):
email = self.cleaned_data.get('email')
if User.objects.filter(email=email).exists():
raise forms.ValidationError('Email is in use!!')
return email
def clean_password2(self):
pass1 = self.cleaned_data.get('password')
pass2 = self.cleaned_data.get('password2')
if pass1 != pass2:
raise forms.ValidationError('Passwords does not match')
return pass2
html(用于注册,但登录方式相同):
{{title}}
{%csrf_令牌%}
{%form.username.errors%中的错误}
{{error}
{%endfor%}
{%form.email.errors%}
{{error}
{%endfor%}
{%form.password.errors%}
{{error}
{%endfor%}
{form.password2.errors%%中的错误为%1}
{{error}
{%endfor%}
{{form.username.label}
{{form.username}
{{form.email.label}
{{form.email}
{{form.password.label}
{{form.password}}
{{form.password2.label}
{{form.password2}}
登录
将未绑定的类添加到上下文中loginForm
-
使用绑定表单form=registerForm(request.POST)
和form.is\u valid()
因此,在您的视图中更改您的:
“表单”:登录信息表单
至“表单”:表单
“表单”:注册执行
到“表单”:表单
您添加到上下文中的未绑定类loginForm
-
使用绑定表单form=registerForm(request.POST)
和form.is\u valid()
因此,在您的视图中更改您的:
“表单”:登录信息表单
至“表单”:表单
“form”:registerForm
改为“form”:form改为“form”:loginForm
使用“form”:form
和您的注册表页中的相同内容:“form”:registerForm
“form”:form
我犯了多大的错误。谢谢你改为“form”:loginForm
使用“form”:form
和你的注册表页面中的相同内容:“form”:registerForm
“form”:form
我犯了多大的错误。非常感谢。
<div class="container">
<div class="row justify-content-center">
<h3 class="text-center">{{ title }}</h3>
<hr>
<div class="col-md-4">
<form method="post">
{% csrf_token %}
{% for error in form.username.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
{% for error in form.email.errors %}
<p class="bg-danger text-light">{{ error }}</p>
{% endfor %}
{% for error in form.password.errors %}
<p class="bg-danger text-light">{{ error }}</p>
{% endfor %}
{% for error in form.password2.errors %}
<p class="bg-danger text-light">{{ error }}</p>
{% endfor %}
<label for="{{ form.username.id_for_label }}">{{ form.username.label }}</label>
{{ form.username }}
<br>
<label for="{{ form.email.id_for_email }}">{{ form.email.label }}</label>
{{ form.email }}
<br>
<label for="{{ form.password.id_for_label }}">{{ form.password.label }}</label>
{{ form.password }}
<br>
<label for="{{ form.password2.id_for_label }}">{{ form.password2.label }}</label>
{{ form.password2 }}
<hr>
<div class="d-grid gap-2">
<button type="submit" class="btn btn-outline-success">Login</button>
</div>
</form>
</div>
</div>
</div>