zoukankan      html  css  js  c++  java
  • python测试开发django-103.form表单自定义校验规则(validators)

    前言

    from表单常见的校验方式,常用的 CharField 可以传以下三个参数

    • min_length 最小长度
    • max_length 最大长度
    • required 是否是必填的

    对于复杂一点的校验,需要自己写检验器了,比如:判断输入的账号必须是test开头

    自定义校验validators

    在 CharField 传validators参数,传值是一个list,里面是函数对象名称,可以有多个校验函数。

    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    
    
    def check_username(value):
        """校验username 以test开头"""
        if not str(value).startswith("test"):
            raise ValidationError('参数不合法,必须以test开头')
    
    
    class LoginForm(forms.Form):
        """登录Form表单"""
        username = forms.CharField(max_length=20,
                                   min_length=3,
                                   required=True,
                                   label="用户名",
                                   validators=[check_username],
                                   error_messages={
                                       'required': '用户名不能为空',
                                       'min_length': '用户名不能少于3位字符',
                                       'max_length': '用户名不能大于20位字符',
                                       'invalid': '参数不合法,格式错误'
                                   })
        password = forms.CharField(max_length=16,
                                   min_length=6,
                                   required=True,
                                   label="密码",
                                   widget=forms.PasswordInput,
                                   error_messages={
                                       'required': '密码不能为空',
                                       'min_length': '密码不能少于6位字符',
                                       'max_length': '密码不能大于16位字符',
                                   })
    
    

    模板中引用报错

    模板中引用errors

    <form action="" method="POST" id="login-form" style="text-align:center;">
        {% csrf_token %}
        {% for field in form_obj %}
            <p>
                {{ field.label_tag }}
                {{ field }}
                {{ field.errors }}
            </p>
        {% endfor %}
        <p>
            {{ error_msg }}
        </p>
        <p>
            <input type="submit" value="登录" >
        </p>
    </form>
    

    页面显示效果

    EmailField 邮箱格式校验

    校验输入字符是邮箱格式,可以用 EmailField 字段

    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    
    username = forms.EmailField(required=True,
                                    label="邮箱",
                                    error_messages={
                                       'required': '用户名不能为空',
                                       'invalid': '格式不合法'
                                   })
    

    error_messages 里面invalid 是邮箱不合法的时候给出报错内容

  • 相关阅读:
    Axis,axis2,Xfire以及cxf对比 (转)
    客户端调用服务器端三种方式
    webservice发送数据,取数据的方式
    强制关闭myeclipse出现的问题
    取当前系统的上月时间
    oracle 报Ora-01008错误:oracle 并非所有变量都已绑定的原因.TO_number();动态执行select..into..语句时
    ResultSetMetaData rsmd = rs.getMetaData()是什么意思?
    概率质量函数:怀孕周期的PMF
    Python 正则表达式
    TF-IDF
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14975609.html
Copyright © 2011-2022 走看看