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>一个用户注册页面各字段校验的例子

   Django学习之Forms组件一_第1张图片

Django学习之Forms组件一_第2张图片

Django学习之Forms组件一_第3张图片

我们看下报错的情况

Django学习之Forms组件一_第4张图片

3>渲染标签功能

    以上一个简单的例子展示了Forms组件的字段校验功能,我们必须注意的一个点就是:html页面form表单下面input标签

    或者其他的checkbox,select标签等等,他们的name值必须跟自定义form类的属性名称一致,这样传递post请求时,参数

   才能对应上,才能进行校验,但是目前这两个值都是自己写的,通过肉眼评判是否一致,有没有什么方法能实现,类似我

   写了一边,另一遍就“通过语法关联”出来,这样避免错误呢?

   答案是有的, 就是这个forms组件自带的标签渲染功能,它能通过定义类时各字段的设置,渲染出不同的html标签。

   先改下上面的例子,通过渲染方式实现,如下

  Django学习之Forms组件一_第5张图片

Django学习之Forms组件一_第6张图片

Django学习之Forms组件一_第7张图片

    方式二:

Django学习之Forms组件一_第8张图片

Django学习之Forms组件一_第9张图片

Django学习之Forms组件一_第10张图片

方式三:

Django学习之Forms组件一_第11张图片

Django学习之Forms组件一_第12张图片

Django学习之Forms组件一_第13张图片

 以上方式都可以渲染,你可以不用forms组件,直接手写,也可以用任意一种渲染方式生成,请随意,

4>指定输入框类型及标签带属性

Django学习之Forms组件一_第14张图片

Django学习之Forms组件一_第15张图片

要增加自定义的属性或者样式,直接在widget里面添加attrs参数,attrs={'属性名':'值'}增加属性

Django学习之Forms组件一_第16张图片

Django学习之Forms组件一_第17张图片

你可能感兴趣的:(python学习)