欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

django 表单

程序员文章站 2022-07-14 23:04:33
...

django 表单

django表单的作用

在Django中的表单,主要有两个功能:

  1. 渲染表单模板(只有前后端不分离时才有可能使用,一般情况不用)。
  2. 表单验证数据是否合法。

验证数据基本用法

  1. app/forms.py中定义表单验证类,根据前台提交的每个字段定义对应的属性进行验证。
  2. 实例化表单验证类(传入前台提交的参数)。
  3. 通过form.is_valid()校验提交的参数。
  4. 如果校验成功,则从form.cleaned_data中获取前台提交的参数。
  5. 如果校验失败,则从form.errors中获取错误信息,form.errors获取的html格式的错误信息,可以通过form.errors.get_json_data()获取字典格式的错误信息。
    django 表单
    自定义错误信息
    通过Field的error_messages属性定义每个校验的错误信息。如下:
    django 表单

常用的Field

CharField:

用来接收文本。
参数:
max_length:这个字段值的最大长度。
min_length:这个字段值的最小长度。
required:这个字段是否是必须的。默认是必须的。
error_messages:在某个条件验证失败的时候,给出错误信息。

EmailField:

用来接收邮件,会自动验证邮件是否合法。
错误信息的key:required、invalid。

FloatField:

用来接收浮点类型,并且如果验证通过后,会将这个字段的值转换为浮点类型。
参数:
max_value:最大的值。
min_value:最小的值。
required:这个字段是否是必须的。默认是必须的。
错误信息的key:required、invalid、max_value、min_value。

IntegerField:

用来接收整形,并且验证通过后,会将这个字段的值转换为整形。
参数:
max_value:最大的值。
min_value:最小的值。
错误信息的key:required、invalid、max_value、min_value。

URLField:

用来接收url格式的字符串。
错误信息的key:required、invalid。

常用验证器

在验证某个字段的时候,可以传递一个validators参数用来指定验证器,进一步对数据进行过滤。
很多验证器其实通过Field或者一些参数就可以指定。比如EmailValidator,可以通过EmailField来指定,比如MaxValueValidator,可以通过max_value参数来指定。

  1. MaxValueValidator:验证最大值。
  2. MinValueValidator:验证最小值。
  3. MinLengthValidator:验证最小长度。
  4. MaxLengthValidator:验证最大长度。
  5. EmailValidator:验证是否是邮箱格式。
  6. URLValidator:验证是否是URL格式。
  7. RegexValidator:如果还需要更加复杂的验证,那么可以通过正则表达式的验证器:RegexValidator。

如下: 验证手机号码的正则表达式验证器。
django 表单

自定义验证字段的方法

在注册的表单验证中,我们想要验证手机号码是否已经被注册过了,那么这时候就需要在数据库中进行判断才知道。
对某个字段进行自定义的验证方式是,定义一个方法,这个方法的名字定义规则是:clean_fieldname。如果验证失败,那么就抛出一个验证错误。

校验单个属性

如下:定义clean_属性名的方法针对单个属性进行校验
django 表单

校验多个属性

如下: 重写父类的clean方法。
django 表单

提取错误信息

django原生的错误信息展示比较混乱,需要提取其中需要的信息返回给前端。
在表单类中定义get_error_msg方法(可以定义一个父类,将get_error_msg写在父类中,所有的表单类都继承这个父类)

def get_error_msg(self):
	errors = self.errors.get_json_data()
    err_msg = {}
    for key, msg_list in errors.items():
        item_msg = []
        for msg in msg_list:
            item_msg.append(msg["message"])
        err_msg[key] = item_msg
    return err_msg

django 表单

相关标签: python django