RegexValidator校验器:

在自定义的form组件类设置字段validators的值,引入RegexValidator模块

from django import forms

from django.core.validators import RegexValidator

from django.core.exceptions import ValidationError

class Myform(forms.Form):

name = forms.CharField(

# required=True,  # 默认为True

        min_length=2,

max_length=6,

initial='abc'# 默认值

        help_text='长度为26个字符!'# 帮助信息

        error_messages=[{  # 自定义错误提示信息(默认为英文)

            'required': '不能为空!',

'min_length': '不能少于2个字符!'

        }],

validators=[RegexValidator(r'^(\w)+$','用户名只能有字母数字下划线组成!'),],

        # disabled=True#默认为True显示

    )

email = fields.EmailField(required=False,

error_messages={'required': u'邮箱不能为空','invalid': u'邮箱格式错误'},

widget=widgets.TextInput(attrs={'class': "form-control", 'placeholder': u'邮箱'}))

自定义函数校验:

from django.shortcuts import render,HttpResponse

from django import forms

from app01 import models

from django.core.validators import RegexValidator

import re

from django.core.exceptions import ValidationError

#自定义校验函数,直接在字段validators中使用

def name_valid(value):

name_re=re.compile(r'^[a-zA-Z_]+$')

if not name_re.match(value):

raise ValidationError("只能以字母下划线开头!")

class Myform(forms.Form):

name = forms.CharField(

# required=True,  # 默认为True

        min_length=2,

max_length=6,

initial='abc'# 默认值

        help_text='长度为26个字符!'# 帮助信息

        error_messages=[{  # 自定义错误提示信息(默认为英文)

            'required': '不能为空!',

'min_length': '不能少于2个字符!'

        }],

validators=[RegexValidator(r'^(\w)+$','用户名只能有字母数字下划线组成!'), name_valid],

# 自定义校验规则(列表中放自定义函数名,或者引入django内置的RegexValidator校验器,可以混合使用)

    )

校验顺序:

自定义类实例化返回值对象的is_valid()方法调用:

(1)字段规则校验

(2)validators校验(RegexValidator校验器或自定义校验函数)

(3)局部钩子(类中定义的以clean_字段名命名的函数,校验正常必须返回该字段的值self.cleaned_data.get('name'))

(4)全局钩子(类中定义的函数名clean,校验正常必须返回该对象的校验结果值return self.cleaned_data)

(5)每一步通过校验单结果都以字典形式保存在类对象的cleaned_data属性中

Django之form.Form字段校验的更多相关文章

  1. {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm

    Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...

  2. Django的form组件——自定义校验函数

    from django.shortcuts import render,HttpResponse from django import forms from django.core.exception ...

  3. Django组件之Form表单

    一.Django中的Form表单介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入 ...

  4. Django框架之Form组件

    一.初探Form组件 在介绍Form组件之前,让大家先看看它强大的功能吧!Go... 下面我们来看看代码吧! 1.创建Form类 from django.forms import Form from ...

  5. django基础 -- 10.form , ModelForm ,modelformset

    一.生成页面可用的 HTML标签 1.form 所有内置字段 Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label ...

  6. django补充和form组件

    Model常用操作: - 参数:filter - all,values,values_list [obj(id,name,pwd,email),obj(id,name,pwd,email),] mod ...

  7. django中的 form 表单操作

     form组件  1. 能做什么事?   1. 能生成HTML代码  input框   2. 可以校验数据   3. 保留输入的数据   4. 有错误的提示   1. 定义   from django ...

  8. Django基础之form组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  9. Django框架 之 form组件

    Django框架 之 form组件 浏览目录 Form介绍 普通的登录 使用form组件 Form详情 常用字段 校验 进阶 使用Django Form流程 一.Form介绍 我们之前在HTML页面中 ...

随机推荐

  1. tp5--Excel表格导入导出

    来源于:https://www.cnblogs.com/MyIsLu/p/6830579.html PHPExcel 扩展包下载地址:             https://github.com/P ...

  2. 解决QQ可以登录但是网页打不卡 ,提示代理服务器拒绝连接 的问题。

  3. 2019-2020-1 20199328《Linux内核原理与分析》第六周作业

    使用gdb跟踪分析一个系统调用内核函数 首先我们删除本身的menu目录,并从github上克隆一个menu,并进行编译 编译过程 现在找到test.c文件,加入上个实验中做的getPid()方法 利用 ...

  4. qt 鼠标拖动窗口 跳动 解决

    因为获取当前的位置,似乎没有把标题栏的高度记进去. 所以移动前,得考虑到标题栏的高度. 用以下方式获取标题栏高度: QApplication::style()->pixelMetric(QSty ...

  5. [Inno Setup] How to create a OuterNotebook/welcome page in the uninstaller

    By Martin Prikryl https://stackoverflow.com/questions/42625626/inno-setup-how-to-create-a-outernoteb ...

  6. USACO Training Section 1.1 Your Ride Is Here

    题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...

  7. 图论--最长路--洛谷P1807 最长路_NOI导刊2010提高(07)

    题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入格式 ...

  8. 将A页面提交的数据id传递到B页面

    A页面 在A页面跳转到B页面的时候,在url后面可以拼接参数 例如: window.location.href = './B.html?' + id; 跳转到B页面之后,可以通过url地址获取到从A页 ...

  9. 配置中心Apollo搭建全过程

    总体架构 用户在Portal操作配置发布 Portal调用Admin Service的接口操作发布 Admin Service发布配置后,发送ReleaseMessage给各个Config Servi ...

  10. sequel pro无法连接mysql服务器

    1. 添加用户 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_passwd' WITH GRANT OPTION; FLU ...