Django-超简单的表单数据验证,一看就懂(六)

这个是以一个简单的用户信息填写表单来写的;

注意、注意、注意
本示例均在APP3下编写完成的
参考链接:Django-创建一个简单的表单,并获取表单信息(五)

一、HTML编写

在这里我命名为login.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>login</title>
</head>
<body>
   <form action="" method="POST" novalidate><!-- novalidate的作用是屏蔽浏览器默认提示错误提示 -->
       {% csrf_token %}
           <div>
               <div>
                   用户名:{{ obj1.user }}
                   {% if obj1.errors.user %}
                       <span class="error-msg">{{ obj1.errors.user.0 }}</span>
                   {% endif %}
               </div>
               <div>
                   密码:{{ obj1.pwd }}
                   <span class="error-msg">{{ obj1.errors.pwd.0 }}</span>
               </div>
               <div>
                   年龄:{{ obj1.num }}
                   <span class="error-msg">{{ obj1.errors.num.0 }}</span>
               </div>
               <div>
                   电话:{{ obj1.phone }}
                   <span class="error-msg">{{ obj1.errors.phone.0 }}</span>
               </div>
               <div>
                   背景:{{ obj1.test }}
                   <span class="error-msg">{{ obj1.errors.test.0 }}</span>
               </div>
               <input type="submit" value="提交">
           </div>
   </form>
</body>
</html>

二、views.py

"""
表单数据验证
"""
def mobile_validate(value):
    #使用正则对手机号进行验证
    pass
    mobile_re = re.compile(r'^(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$')

    if not mobile_re.match(value):
        raise ValidationError('手机号码格式错误')#不满足返回‘手机号码格式错误’
class LoginForm(forms.Form):#继承表单类
    """
    此处是对用户名称验证,判断是否为空,为空会输出提示信息
    """
    user = forms.CharField(required=True, error_messages={'required':'用户名不能为空'})
    """
    密码验证为空会提示   密码不能为空,<6位会提示,大于10位会提示
    """
    pwd = forms.CharField(required=True,
                          min_length=6,
                          max_length=10,
                          error_messages={
                              'required':'密码不能为空',
                              'min_length':'密码长度不能小于6',
                              'max_length':'密码长度不能大于10'
                                            }
                          )

    """
    年龄验证  不能为空,只能是整形数字,不为数字
    """
    num = forms.IntegerField(   # IntegerField整型
        required=True,
        max_value=150,#最大值
        min_value=0,#最小值
        error_messages={
            'required':'年龄不能为空',
            'max_value':'年龄不能大于150',
            'min_value':'年龄不能小于0',
            'invalid':'必须输入数字'
                        }

            )
    """
    电话号码验证  不能为空,不为空调用mobile_validate
    """
    phone = forms.CharField(
        required=True,
        error_messages={
            'required':'电话号码不能为空'
        },validators=[mobile_validate,]#验证方法加载
    )
    """
    背景
    """
    test_choices = (
        (0,'北京'),
        (1,'重庆'),
        (2,'成都'),
        (3,'上海')
    )
    test = forms.IntegerField(
        widget=forms.Select(choices=test_choices)
    )

def login(request):
    if request.POST:
        objPost = LoginForm(request.POST)
        ret = objPost.is_valid()
        if ret:
            print(objPost.clean(),'---------------------------')
        else:
            from django.forms.utils import ErrorDict
            pass
        return render(request,'login.html',{'obj1':objPost})
    else:
        objGet = LoginForm()
        return render(request,'login.html',{'obj1':objGet})

三、添加url映射

开打整个项目的urls.py文件,并映射路径

from App3.views import login
path('',login),

四、结果展示

请添加图片描述

希望这篇文章对你有用!
谢谢点赞评论!

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值