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

  • 相关阅读:
    第一周任务Largest Submatrix of All 1’s
    第一周 Largest Rectangle in a Histogram
    第二次作业
    B. Light bulbs(2019 ICPC上海站)
    二维平面最近点-分治
    python生成器,推导式
    python函数名的运用,闭包,迭代器
    python函数(二)
    python函数(一)
    python基础(七)
  • 原文地址:https://www.cnblogs.com/open-yang/p/11223160.html
Copyright © 2011-2022 走看看