django form field

本文详细介绍了Django中Form的使用,包括Form的参数、方法,以及各种Field类型的特性和参数,如CharField、IntegerField、DateField等。还讨论了不同Widget的设置,如TextInput、Select、CheckboxInput等,以及如何进行数据验证和自定义错误信息。

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

Form(baseform,DeclarativeFieldsMetaclass)

参数和方法

参数:

data:代表将数据绑定到对应的表单字段

auto_id: 默认值为id_%s,以字符串格式化表示,若设置html元素控件的id属性,比如表单字段job,则元素空间id为id_job,%s代表表单字段的名称

prefix:默认为none,以字符串表示,设置表单的控件属性,name和id的属性值,如果一个网页使用多个相同表填单,name设置该属性可以区分多个表单

initial:dict形式参数,默认为none,设置表单实例化过程中的初始值

label_suffix: 默认为“:”

field_order: 生成html顺序,默认为自定义字段顺序,若自定义排序则需要把每个表单字段按照先后顺序放入列表

use_required_attrtbute:默认为True 或者None,表示所有字段必须不能为空

方法:

errors():异常信息

is_valid():严重表单是不是存在异常

as_table();as_ul();as_p()

has_changed():用于对比提交的表单与初始化的表单是够发生变化

fields

CharField:文本框,max_length和min_length分别设置

IntegerField:数值框。max_value and min_value

FloatField:数值框,继承IntegerField,验证是够为小数

DecimalField:数值框,继承IntegerField,验证数值是否设置有小数点,max_digits设置最大位数,decimal_places设置小数点最大位数

DateField:文本框,具有验证日期格式的功能,input_formats设置日期格式

TimeField:文本框,验证数据是否为datetime.time或特定时间格式字符串

DateTimeField:文本框,验证数据是够为datetime.datetime datetime.date 或特定日期时间字符串

DurationField:文本框,验证数据是否为一个有效的时间段

RegexField:文本框,继承CharField,验证数据是否与某个正则表达式匹配,参数regex为正则表达式

EmailField:文本框,继承CharField,验证是否为email

FileField:文件上传框,参数max_length 设置上传文件名最大长度, 参数allow_empty_file设置是否允许文件内容为空

ImageField:图片文件上传控件,继承FileField,验证文件是否为Pillow库可识别的图像格式

FilePathField:文件选择控件,在特定的目录选择文件,参数path是必须参数,参数值为目录绝对路径;其他参数为可选参数

URLField:文本框,继承CharField,验证数据是否为有效的路由抵制

BooleanField:复选框,设有true和false,如果required=True,复选框默认为True

NullBooleanField:复选框,设有none true 和false三个选选项

ChoiceField:下拉框,参数choices以元组形式表示,用于设置下拉框的选项列表;

TypedChoiceField:下拉框,继承ChoiceField,参数coerce代表强制转化数据类型,参数empty_value表示空值,默认为空字符串

MultipleChoiceField:下拉框,继承ChoiceField,验证数据是否在下拉框列表

TypedMultipleChoiceField:下拉框,继承MultipleChoiceField,验证数据是否在下拉框列表可强制转化数据类型,参数coerce代表强制转换数据类型,参数empty_value表示空值,默认为空字符串

ComboField:文本框,为表达字段设置验证功能,比如字段类型为CharField为该字段添加emailField,使其拥有邮箱验证功能

MultiValueField:文本框,将多个表单字段合并成一个新的字段

SplitDateTimeField:文本框,继承自MultiValueField,严重数据是否为datetime.datetime或特定日期时间格式的字符串

GenericIPAddressField:文本框,继承自CharField,严重数据是否为有效的IP地址

SlugField:文本框,严重数据是否只有字母,数字下划线和连字符组成

UUIDField:继承CharField,严重数据是不为UUID格式

Field的参数

widget:设置html控件的样式

文本框类型

  •          TextInput:对应CharField,文本框内容设置为文本格式
  •           NumberInput:对应IntegerField字段,文本框只能输入数值
  •           EmaiInput:对应EmailField,验证输入值是否为邮箱地址格式
  •           URLInput:对应URLField,判断输入值是否为路由格式
  •           PasswordInput:对对应CharField,默认显示”*“
  •           HiddenInput:CharField,隐藏文本框
  •           DateInput:对应DateField,输入值是否为日期格式
  •           DateTimeInput:对应DateTimeField,是否为日期时间类型
  •           TimeInput: 对应TimeField,是否为时间类型
  •           Textarea:对应CharField,将文本框设置为textarea类型

下拉和复选框类型

  • CheckBoxInput:对应BooleanField字段,设置复选框,选项为true或者false
  • Select:对应ChoiceField字段,设置下拉框
  • NullBooleanSelect:对应NullBooleanField,设置复选框,选项为None True False
  • SelectMultiple:对应choicefield字段,与select类似,允许选择多个值
  • RadioSelect:对应ChoiceField字段,单选按钮
  • CheckboxSelectMultiple:对应ChoiceField,与selectmultiple类似,设置为复选框列表

上传文件类型:

  • FileInput:对FileField或者ImageField字段
  • ClearableFileInput:对FileField或者ImageField字段,但是多了复选框,允许上多个文件或者图片
  • MultipleHiddenInput:隐藏一个或多个html控件
  • SplitDateTimeWidget:组合使用DateInput和TimeInput
  • SplitHiddenDateTimeWidget:与MultipleHiddenInput类似,你懂得
  • SelectDateWidget:组合使用三个Select,分别生成年月日下拉框

required:输入的数据是否为空,默认值为true

label

initial:设置字段的初始值

help_text:设置帮助提示信息

error_messages:设置错误信息,以字典形式表示,比如{

"required":"不能为空",”invalid“:”格式错误“

}

validators:自定义数据验证规则,以列表格式表示,列表元素为函数名

disabled:true或false, 控件是否可以编辑

label_suffix:label的后缀

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值