Django学习之Forms组件一
1>概念
django框架提供了一个Form类,来进行web开发中的表单提交数据的处理工作。
form组件的2大功能:
1 对用户提交的内容进行验证(from表单/Ajax,显示错误信息)
2 保留用户上次输入的信息
-- 可以生成html标签
先看一下创建一个Form表单实现校验功能的基本语法,如下,
自定义的类要继承Django的Form类,里面一般就增加自定义字段,方法都是调用父类Form的。
class user_Form(Form):
字段=fields.字段类型(默认参数:required=True, widget=widgets.插件(attrs={}))
常用字段类型:Charfield,RegexField,IntegerField,EmailField
常用参数:max_length,min_length,
widget=widgets.Select(choices=models.Classes.objects.values_list('id','title'))
error_messages={
'required':'用户名不能为空',
'max_length':'太长了',
'min_length':'太短了', }
disabled=False, # 是否可以编辑
obj=user_Form(request.POST) # 拿到html传过来的请求,传入自定义的form表单做验证
obj.is_valid() # 判断验证是否通过,返回bool值,注意,这里只会校验user_Form中存在的字段,并且是全部校验,
若是request.POST中包含一些user_Form不存在的字段,它不管,只要是user_Form中的字段全部校验通过,这里就会
返回True,反之,如果少了字段或者包含校验失败的字段,就返回False
obj.cleaned_data() # 验证通过后的值 字典形式
obj.errors # form 返回的错误信息 是个对象 'obj.errors.字典.0 ' 获取第一个错误信息
2>一个用户注册页面各字段校验的例子
我们看下报错的情况
3>渲染标签功能
以上一个简单的例子展示了Forms组件的字段校验功能,我们必须注意的一个点就是:html页面form表单下面input标签
或者其他的checkbox,select标签等等,他们的name值必须跟自定义form类的属性名称一致,这样传递post请求时,参数
才能对应上,才能进行校验,但是目前这两个值都是自己写的,通过肉眼评判是否一致,有没有什么方法能实现,类似我
写了一边,另一遍就“通过语法关联”出来,这样避免错误呢?
答案是有的, 就是这个forms组件自带的标签渲染功能,它能通过定义类时各字段的设置,渲染出不同的html标签。
先改下上面的例子,通过渲染方式实现,如下
方式二:
方式三:
以上方式都可以渲染,你可以不用forms组件,直接手写,也可以用任意一种渲染方式生成,请随意,
4>指定输入框类型及标签带属性
要增加自定义的属性或者样式,直接在widget里面添加attrs参数,attrs={'属性名':'值'}增加属性