关于Django的Form表单
程序员文章站
2022-06-11 19:20:36
...
在Django中有一个验证神器,那就是Form表单,它会自动生成你所需要的表单内容,并自动为你验证是否正确,并可以返回错误的详细信息(前提是你写的详细)。在flask里面也是类似的,仅仅是类似,但还是有区别的,这里flask的就不详说
views.py
#先导入必要的包(Django自带的)
from django import forms
from django.forms import fields
#创建一个表格类
class egForm(forms.Form):
#设置用户名的长度,以及错误提示
user = fields.CharField(
max_length=18,
min_length=6,
required=True,
error_messages={'required': '用户名不能为空','max_length': '太长了','min_length': '太短了','invalid':'格式输入有误'}
)
#设置密码要求
pwd = fields.CharField(
required=True,
min_length=6,
max_length=18,
eror_message={'required':'用户名不能为空','max_length': '密码太长了','min_length': '密码最小为6位','invalid':'格式输入有误'})
#设置年龄要求
age = fields.IntegerField( required=True,max_length=3,error_message:{'required':'年龄不能为空','max_length': '年龄超出范围','min_length': '您太小了吧,'invalid':'年龄未知'})
#设置email要求,
email = fields.EmailField(required=True,min_length=8,error_message:{'required':'邮箱不能为空','min_length': '邮箱太短','invalid':'邮箱格式输入有误'})
#函数(路由的view)
def eg(request):
#判断提交请求是‘POST’,‘GET’
if request.method == 'GET':
#如果是GET请求,那就渲染from的HTML页面,通过字典的方式把数据传过去
#创建
obj = egForm()
return render(request,'eg.html',{'obj':obj})
else:
obj = F1Form(request.POST)
# 是否全部验证成功
if obj.is_valid():
# 用户提交的数据
print('验证成功',obj.cleaned_data)
#redirect是重定向,后面一般是url,redirect(reverse('app:urlname')),登录或注册后需要跳转的页面,这里只是假设
return redirect('http://www.baidu.com')
#没有验证成功
else:
print('验证失败',obj.errors)
return render(request, 'eg.html',{'obj':obj})
eg.HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form id="eg" action="/eg.html" method="POST">
//把传过来的对象obj进行渲染
<p>账号:{{ obj.user }}{{ obj.errors.user.0 }}</p>
<p>密码:{{ obj.pwd }}{{ obj.errors.pwd.0 }}</p>
<p>年龄:{{ obj.age }}{{ obj.errors.age.0 }}</p>
<p>e-mail:{{ obj.email }}{{ obj.errors.email.0 }}</p>
<input type="submit" value="提交" />
</form>
<script src="/static/jquery-3.1.1.js"></script>
</body>
</html>
HTML中后面的obj.errors.user.0,这样可以把错误直接显示在输入的后面,直接判断此处输入是否有误.后面的.0:假如输入的错误有很多,那只显示第一条就行了
HTML的样式就没有写,这是一个很简洁的演示
上一篇: 优酷为什么不能全屏播放?如何解决优酷视频不能全屏?
下一篇: 资金不足