Django-超简单的表单数据验证,一看就懂
Posted myriads_changes_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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),
四、结果展示
希望这篇文章对你有用!
谢谢点赞评论!
以上是关于Django-超简单的表单数据验证,一看就懂的主要内容,如果未能解决你的问题,请参考以下文章