zoukankan      html  css  js  c++  java
  • Django之form.Form字段校验

    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)字段规则校验

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

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

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

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

  • 相关阅读:
    topshelf和quartz
    Dapper的使用
    多快好省的做个app开发
    端口扫描之王——nmap入门精讲(转)
    你对自己的定位是什么,就能成为什么样的人(转)
    2015工作总结及2016展望
    使用php+swoole对client数据实时更新(二) (转)
    解决一bug的流程复盘
    JSONObject与JSONArray的使用
    GDB十分钟教程
  • 原文地址:https://www.cnblogs.com/open-yang/p/11223160.html
Copyright © 2011-2022 走看看