当我第一次访问索引页时,.is_valid返回false。如何使它不显示错误消息?初次访问页面时为什么显示False?有什么方法可以避免错误消息?
urls.py在下面
from django.urls import path
from . import views
urlpatterns = (
path('', views.index, name='index'),
)
views.py在下面
from django.shortcuts import render
from . import forms
def index(request):
form = forms.Page1(request.GET or None)
if form.is_valid():
message = 'True'
else:
message = 'False'
content = {
'title': 'Webapp',
'form': form,
'message': message,
}
return render(request, 'forms.html', content)
forms.py在下面
from django import forms
EMPTY_CHOICES = (
('', '-'*10),
)
GENDER_CHOICES = (
('man', '男'),
('woman', '女')
)
class Page1(forms.Form):
user_sir_name = forms.CharField(
label='姓:',
max_length=20,
required=True,
widget=forms.TextInput(),
)
user_given_name = forms.CharField(
label='名:',
max_length=20,
required=True,
widget=forms.TextInput(),
)
user_sex = forms.ChoiceField(
label='性別:',
widget=forms.Select,
choices=EMPTY_CHOICES + GENDER_CHOICES,
required=True,
)
# You will get False for the first time as you request the url, you are submitting nothing from your form and your fields are required to pass the input.
# So, change your views.py method and make your request to post
def index(request):
form = forms.Page1(request.POST or None)
if form.is_valid():
message = 'True'
else:
message = 'False'
content = {
'title': 'Webapp',
'form': form,
'message': message,
}
return render(request, 'forms.html', content)
and in your forms.html, change your form tag method to post
<form method="POST">
...
...
</form>
您可以在实例化表单后使用print(form.errors)来检查表单错误。这将在命令提示符下打印html错误消息。您甚至可以将此消息传递到模板以进行渲染。
def index(request):
if request.method=="POST":
form = forms.Page1(request.POST)
if form.is_valid():
message = 'True'
else:
print(form.errors)
else:
print("you didn't post anything to form")
message = 'False'
content = {
'title': 'Webapp',
form': form,
'message': message,
}
return render(request, 'forms.html', content)