自定义验证(一)

表单的 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)

现在我们尝试下输入错误的信息:

没填写任何信息:


填写信息超过十个字符:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容