表单的 error_messages
参数让你覆盖字段默认的异常信息。其格式为一个字典。
新建一个表单,自定义他的错误信息:
from django import forms
class TestForm(forms.Form):
# error_messages 是自定义的错误信息
# required,表示输入信息为空引发的错误
# 另外 CharField 还有 max_length, min_length 两种错误信息类型
name = forms.CharField(error_messages={'required': '请输入名字'})
我们在 shell 里面测试下这个表单:
from myApp.forms import TestForm
# 一个 name 的值为空的表单
f = TestForm({'name':''})
# 打印自定义的错误信息
f.errors
>>> {'name': ['请输入名字']}
每个字段都定义了它自己的错误信息,详情参见: 内建字段
现在我们让错误信息出现在页面。
首先我们扩展下表单的错误信息,增加一个最大字段长度的属性:
from django import forms
class TestForm(forms.Form):
name = forms.CharField(
max_length = 10,
error_messages={
'required': '请输入名字',
'max_length': '名字不能超过10个字符'
}
)
编写 test.html :
<html>
<body>
<form action={% url 'test' %} method="post">
{% csrf_token %}
名字:<input type="text" name='name'>
{# 表单的错误信息,如果表单没有错误,该字段是空的,不会显示 #}
{{ form.errors.name }}
<input type="submit" value="提交">
</form >
</body>
</html>
网页现在看起来像这样的:
编写视图函数:
from django.shortcuts import render
from myApp.forms import TestForm
def test(request):
context = {}
if request.method == 'GET':
form = TestForm
if request.method == 'POST':
form = TestForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
context['form'] = form
return render(request, 'test.html', context)
else:
context['form'] = form
return render(request, 'test.html', context)
return render(request, 'test.html', context)
现在我们尝试下输入错误的信息:
没填写任何信息:
填写信息超过十个字符: