博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django 之Form
阅读量:4333 次
发布时间:2019-06-07

本文共 3392 字,大约阅读时间需要 11 分钟。

具体可参考:http://www.liujiangblog.com/course/django/153

https://www.cnblogs.com/liuguniang/p/7141837.html

https://www.cnblogs.com/liwenzhou/p/8747872.html

一,Form字段:

1)验证

2)生成HTML(保留上次输入内容)

3)初始化默认值

 Form 重点字段:

------ChoiceField *****8

------MultipleChoiceField

------CharField

------IntegerField

------DecimalField

------DateField

------DateTimeField

------EmailField

------GenericIPAdressField--

------FileField

------RegexField

 

三,具体用法:

 1)CharField的参数

class TestForm(forms.Form):    user = fields.CharField(          required=True,  # 是否必填          max_length=12,  # 最大长度          min_length=3,  # 最小长度          error_messages={  # 错误提示             'required':''          },          # widget = widgets.Textarea, # 定制html插件          # widget=widgets.Select,          label="用户名",          initial='请输入用户名',  # 默认值          show_hidden_initial=False,  # 是否在当前插件在家一个隐藏的且具有默认值的插件(可用于检验两次输入是否一致)          validators=[],  # 自定制验证规则(是否是手机号)          localize=False,  # 是否支持本地化          disabled=True,  # 是否可以编辑          label_suffix=":",    )    age = fields.IntegerField(label="年龄",)    email = fields.EmailField(label="邮箱",)

 

当widget = widgets.Textarea 展示效果如下

 

当widget=widgets.Select展示效果如下

 

2)

简单了解1){
{ obj.as_p }}2)
    {
    { obj.as_ul }}
3)
{
{ obj.as_table}}

 3)IntegerField类型 

age = fields.IntegerField(			label="年龄",			max_value=12,			min_value=5,			error_messages={				'max_value' : "太大了"			}	)

 4)DecimalField类型

weight = fields.DecimalField(			label = "体重",			max_value=30,  # 最大值			min_value=10,  # 最小值			max_digits=5,  #总长度			decimal_places=3,  #小数位的长度							)

 5)RegexField正则

6)EmailField

7)URLField

8)FileField

 

img = fields.FileField(label="上传文件")

 .html中

novalidate enctype="multipart/form-data"

 9)ChoiceField

city = fields.ChoiceField(			label="城市",			choices=[(1,"上海"),(2,"北京"),(3,"天津"),],			initial = 2,				)

 10)MultipleChoiceField

hobby = fields.MultipleChoiceField(			label="爱好",			choices=[(1, "篮球"), (2, "足球"), (3, "乒乓球"), ],			initial=[1, 2],  # 多选是列表	)

 11)TypeChoiceField 转换类型的,打印输出的chocices 1不是字符串类型而是int类型

city = fields.TypedChoiceField(			coerce=lambda x: int(x),#转换类型			label="城市",			choices=[(1, "上海"), (2, "北京"), (3, "天津"), ],			initial=2,  # 单选是单值		)

 

二.Form 之 插件:每一个fields字段都是一个正则表达式+默认的插件组成的,

1)更改默认插件:

widget = widgets.TextInput(attrs={'n':123}), #加自定义属性

 

 2)如果想把

txt = "
from  django.utils.safestring import mark_safetxt =mark_safe("

 3)Django 的内置插件: 单选的两种写法如下: select

只有select 有choice input什么的没有xdb = fields.CharField(			widget=widgets.Select(choices=[(1,"11"),(2,"22"),])	) 也可以直接用ChoiceField
xdb = fields.ChoiceField( choices=[(1,"11"),(2,"22"),] )

 多选的写法如下:

xdb = fileds.MultipleChoiceField(  choices = [(1,"111"),(2,"222")]  widget = widgets.SelectMultiple(attrs = {"class":"cl"}))

 4)checkbox(单选的)

xdb = fields.CharField(			# widget=widgets.Select(choices=[(1,"11"),(2,"22"),])			widget=widgets.CheckboxInput()	)

 5)checkbox(多选的)

xdb = fields.MultipleChoiceField(			initial=[2,],	        choices = [(1, "篮球"), (2, "足球"), (3, "乒乓球"), ],			# widget=widgets.Select(choices=[(1,"11"),(2,"22"),])			widget=widgets.CheckboxSelectMultiple()	)

 6)radio

xdb = fields.ChoiceField(			initial=[2,],	        choices = [(1, "篮球"), (2, "足球"), (3, "乒乓球"), ],			# widget=widgets.Select(choices=[(1,"11"),(2,"22"),])			widget=widgets.RadioSelect()	)

 

 三.特殊的单选或者多选时,数据源是否能实时更新????/

 

 

 

 

 

 

 

 

 

 

 

 

 

https://www.cnblogs.com/

转载于:https://www.cnblogs.com/wangyue0925/p/9047425.html

你可能感兴趣的文章
秀尔算法:破解RSA加密的“不灭神话” --zz
查看>>
Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件
查看>>
运维自动化------ansible搭建
查看>>
linux下安装php的imagick扩展模块(附php升级脚本)
查看>>
sqlserver中int 类型的字段,值为null的时候引发一个问题
查看>>
html学习文档-3、HTML元素
查看>>
php反射
查看>>
iOS字体
查看>>
tp中使用分页技术
查看>>
vue2.0 + element ui 实现表格穿梭框
查看>>
C++11实战——多线程的日志类
查看>>
unity3d iPhone文件目录介绍
查看>>
用ClassName占位和title占位的分析
查看>>
DROP--删除表
查看>>
jQuery选择器总结
查看>>
线程 、进程、协程 三者区别
查看>>
c++常见操作的模板
查看>>
MQ通道配置
查看>>
程序员思维枷锁
查看>>
089-袁佳鹏-实验报告1
查看>>