form组件验证
·定义规则(是一个类)
·前端把数据提交过来
·匹配规则
·判断提交过来的数据是否符合定义的规则
·如果匹配返回True,否则返回errors,可以把这个errors返回给前端,让前端显示到指定位置(比如用户名没填写,验证码没填写)
接下来我们一起来试一试,用form组件验证,1.首先我们创建好前端页面,然后编写views方法,这是我创建的前端提交页面
2.在views下首先导入form验证组件,并创建类,里面添加想要验证的input框 前面的命名为在前端的name 必须一样否则获取不到
3.编写views方法,通过request.POST即可获取刚才类下的数据,当输入不正确时可以通过erros拿到错误信息,其余代码后面有解释,通过这样就利用form组件完成了一次简单的验证前端显示错误信息
我们的错误信息在后端肯定没用,当然我们在获取了通过render传到前端,首先定义错误显示的信息在刚才创建的类上,字段括号后加error_messages={ required为当输入框为空时显示的错误,invalid为当格式出现错误时}
还可以设置输入的长度,首先定义好min或者max_length的值 再在error_messages中定义当触发该错误打印的信息
利用form组件生成输入框
来到前端页面,obj.errors则为获取到的错误信息.user.0则上图定义的required值
当一点提交按钮,就会触发post 如有错误信息 前端的obj.errors.user.0就会获取到信息
其实前端页面的input框也不用自己创建,可以通过后端传来的obj.user obj.pwd obj.email创建,前提是在form组件的类里定义了才行这样设置之后在前端页面有两种优势,注意:但是通过obj.user会自动添加指定的条件required max_length min_length 并将邮箱的type改为Email,我们可以在页面使用检查器,将此改回来,红线为form组件自己添加的去掉即可
优势
一.输入的数值会保存,不会清空
二.当成功提交后,前面定义的views就会通过cleaned_data获取正确信息,并且是以字典的形式获取到,当我们这里是注册用户的话,将此字典通过models添加到数据库,即完成了数据的存储
定义样式
当我们通过{{obj.user}}的方式创建input框,我们怎么为该input框添加样式呢?
我们在views刚才创建的类里操作,首先导入插件widgets
form django.forms import widgets
在括号内定义 自命名=widgets.type类型(attrs={样式})
class为c1的input框: widgets=widgets.TextInput(attrs={'class':'c1'})
超方便的传值
先自定义字典,里面字段对应前端页面的name,再通过obj把字典传过去 initial则为默认值的意思 initial=字典,就会把定义的值传到对应name的属性,页面就会显示字典中传过来的默认值