自定义验证规则

方法一:

from django.forms import Form

from django.forms import widgets
from django.forms import fields
from django.core.validators import RegexValidator class MyForm(Form):
user = fields.CharField(
validators=[RegexValidator(r'^[0-9]+$', '请输入数字'), RegexValidator(r'^159[0-9]+$', '数字必须以159开头')],
)

方法二

import re
from django.forms import Form
from django.forms import widgets
from django.forms import fields
from django.core.exceptions import ValidationError # 自定义验证规则
def mobile_validate(value):
mobile_re = re.compile(r'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$')
if not mobile_re.match(value):
raise ValidationError('手机号码格式错误') class PublishForm(Form): title = fields.CharField(max_length=20,
min_length=5,
error_messages={'required': '标题不能为空',
'min_length': '标题最少为5个字符',
'max_length': '标题最多为20个字符'},
widget=widgets.TextInput(attrs={'class': "form-control",
'placeholder': '标题5-20个字符'})) # 使用自定义验证规则
phone = fields.CharField(validators=[mobile_validate, ],
error_messages={'required': '手机不能为空'},
widget=widgets.TextInput(attrs={'class': "form-control",
'placeholder': u'手机号码'})) email = fields.EmailField(required=False,
error_messages={'required': u'邮箱不能为空','invalid': u'邮箱格式错误'},
widget=widgets.TextInput(attrs={'class': "form-control", 'placeholder': u'邮箱'}))

方法三:

from django.forms import Form
from django.forms import fields
from django.forms import widgets
from app01 import models
from django.core.validators import RegexValidator
class UserInfoForm(Form):
name=fields.CharField(
required=True,
min_length=6,
max_length=12,
)#用户提交是字符串
email=fields.EmailField()#用户提交是字符串 正则
phone=fields.CharField(
#1.通过对象(支持正则表达式)
# validators=[RegexValidator(r'^[0-9]+$', '请输入数字'), RegexValidator(r'^159[0-9]+$', '数字必须以159开头')]
#2.通过函数
# validators=([mobile_validate,])
#在当前类中 方法名称有要求
# validators=([clean_phone])
)#自定义验证规则 正则
def clean_phone(self):
# 去取用户提交的值:可能是错误的,可能是正确
value = self.cleaned_data['phone']
mobile_re = re.compile(r'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$')
if not mobile_re.match(value):
raise ValidationError('手机号码格式错误') if models.UserInfo.objects.filter(phone=value).count():
raise ValidationError('手机号码已经存在')
 

最新文章

  1. Apache+PHP 配置随笔
  2. 如何用 CSS 做到完全垂直居中
  3. 【原创】一段简短的读取libglade的UI文件的Python代码
  4. JQuery的概述
  5. 使用PHP编写发红包程序
  6. jfinal对象封装Record原理
  7. js 实现栈
  8. LeetCode_Combination Sum
  9. IOS UIActionSheet的使用方法
  10. Android GPS应用:临近警告
  11. 基于visual Studio2013解决C语言竞赛题之1034数组赋值
  12. 再说Java EE
  13. 使用C/C++编译预处理时须要注意的问题
  14. 详解android的号码匹配
  15. openstack私有云布署实践【9.3 主从controller单向同步glance-image目录】
  16. try...catch...finally语句块
  17. JAVA库函数总结【持续更新】
  18. JavaScript获取元素尺寸和大小操作总结(转载)
  19. 将SD卡的音频设置为手机铃声后删除,手机铃声没有恢复到默认的问题
  20. 深入理解之 Android Handler

热门文章

  1. tensorflow tfrecord文件存储
  2. cdh日常维护常见问题及解决方案
  3. FastReport导出PDF乱码的问题
  4. CISCO 关闭4786端口解决方法
  5. IntelliJ IDEA及maven、git下载与配置
  6. DD常用命令组合
  7. 分布式大数据系统离线分析技术解决方案(spark2.x)
  8. Input禁用文本框
  9. Python基础(切片,list循环,元组)
  10. Spine用于Timeline(NullReferenceException: Object reference not set to an instance of an object pine.Unity.Editor.AnimationReferenceAssetEditor.OnInspectorGUI ())