Django学习之Forms组件一

本文介绍了Django框架中的Forms组件,主要功能包括用户提交内容的验证和保留用户信息。讨论了Form类的基本语法,如定义字段类型、参数、错误消息和禁用状态。此外,还举例说明了用户注册页面的字段校验,以及如何利用Forms的渲染功能自动生成HTML标签,确保name值与Form类属性一致,减少了手动匹配的错误。文章最后提到,可以通过添加attrs参数来定制输入框的类型和属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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={'属性名':'值'}增加属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值