FORM组件
不利用form组件实现一个简陋的功能
需求
1.注册功能
用户输入的用户名中 不能包含'违规信息'
如果包含了 就提示用户 输入的内容不符合社会主义核心价值观
用户输入的密码 不能小于三位
如果密码少于三位 提示用户 密码太短了
(******)
校验数据通常是前后端都有校验
但是前端校验可有可无 哪怕再牛逼
后端也必须要有校验 反正一句话 前端可有不校验 后端必须校验!!!
思路
1.搭建前端页面 >>> 渲染页面
2.获取前端用户提交的数据校验 >>> 校验数据
3.对数据的校验的结果 展示到前端页面给用户查看 >>> 展示错误信息
# 后端
def reg(request):
back_dic = {"username":'','password':''}
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
if '违规信息' in username:
# 提示信息
back_dic['username'] = '不符合社会主义核心价值观'
if len(password) < 3:
# 提示信息
back_dic['password'] = '密码不能少于三位'
return render(request,'reg.html',locals())
# 前端
username:
{ { back_dic.username }}
password:
{ { back_dic.password }}
使用form组件
定义一个类继承django 中的forms.Form类
在类中创建form组件字段
username = forms.CharField(min_length=3,max_length=8,max_length='用户名',
error_messages={
'min_length':'用户名最短三位',
'max_length':'用户名最长八位',
'required':'用户名不能为空'
},initial='我是初始值',required=False, widget=forms.widgets.TextInput(attrs={'class':'class值'})
)
# min_length char字段的最短长度
# max_length char字段的最长长度
# label 对象.字段.label获得的值,默认是首字母大写的字段名
# error_messages 错误信息的字典
{
'min_length':'不满足最短长度的错误信息',
'max_length':'不满足最长长度的错误信息',
'required':'文本框为空是的错误信息',
'invalid':'邮箱格式不正确时的展示信息',
}
# initial 设置文本框初始值,即前端的value
# required 默认为True,当为False时,意味着这个字段不传也可以通过,is_valid()也可以为True。但是只要你传了,就要校验
关于widget字段
# widget=forms.widgets.TextInput(attrs={'class':'class值'})
# 值一定为forms.widgets
# TextInput 规定里input的类型是text,还可以是其他
# attrs为这个input框添加