• 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属性中

  • 相关阅读:
    字符数组初始化
    makefile学习笔记
    convert between char* and std::string
    mysql 学习笔记(二)
    面试中的Singleton (转)
    由谈退格键的实现来学习字符编码
    mysql 学习笔记(一)
    Eclipse插件的安装方法
    Http状态码
    net use命令
  • 原文地址:https://www.cnblogs.com/open-yang/p/11223160.html
Copyright © 2020-2023  润新知