ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python测试开发django-103.form表单自定义校验规则(validators)

2021-07-07 09:51:32  阅读:173  来源: 互联网

标签:username 自定义 form python required 校验 forms length error


前言

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

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

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

自定义校验validators

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


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 字段


username = forms.EmailField(required=True,
                                label="邮箱",
                                error_messages={
                                   'required': '用户名不能为空',
                                   'invalid': '格式不合法'
                               })

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

   

标签:username,自定义,form,python,required,校验,forms,length,error
来源: https://blog.51cto.com/u_15249893/2995653

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有