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. GOLANG 匿名函数笔记

    在函数内部,没有名字的函数,就是匿名函数 实现方法1: func main(){ a := "我是无参无返回值的匿名函数" x := func(){ //可以获取到匿名函数外部的变 ...

  2. 安装宝塔检测到系统已存在Apache,请使用纯净安装

    执行命令 停止服务 net stop Apache2.4 删除服务 sc delete apache

  3. 数据包的抓取[tcpdump]的应用

    [root@server ~]# yum install tcpdump [root@server ~]# yum install wireshark 1.默认情况下,直接启动tcpdump将监视第一 ...

  4. Codeforces Round #632 (Div. 2) 题解

    空山新雨后,天气晚来秋. 明月松间照,清泉石上流. 竹喧归浣女,莲动下渔舟. 随意春芳歇,王孙自可留.--王维 A. Little Artem 网址:https://codeforces.com/co ...

  5. 重识TCP/IP协议族与HTTP基础

    不忘初心 砥砺前行, Tomorrow Is Another Day ! 本文概要: TCP/IP协议族的网络分层 TCP三次握手四次挥手 Http简介 报文结构 Http的请求方法及状态码 常用的H ...

  6. Python-四则运算-蔡晓晴,杜婷萱

    github链接:https://github.com/Amy-CC/Arithmetic-Operation 一.需求 1.使用-n 参数控制生成题目的个数 2.使用-r 参数控制题目中数值(自然数 ...

  7. 一维滑动窗口(SlidingWindow)

    滑动窗口(Sliding Window)问题经常使用快慢指针(slow, fast pointer)[0, slow) 的区域为滑动窗口已经探索过的区域[slow, fast]的区域为滑动窗口正在探索 ...

  8. 设置 Linux 支持中文

    1.首先在 command 输入 locale,可以看到 Linux 下默认的系统语言的是英文 2.vim ~/.bashrc 打开这个文件,该文件夹相当于系统配置文件 3.打开后,将后三行命令输入到 ...

  9. Spring Boot 整合 Dubbo和Zookeeper

    Spring Boot 整合 Dubbo和Zookeeper Spring Boot 整合 Dubbo和Zookeeper 环境介绍 Zookeeper 安装 启动 Dubbo admin 搭建 创建 ...

  10. async与await----js的异步处理

    async与await----js的异步处理 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 之前写代码遇到一个问题,返回 ...