具体可参考: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)
<ul>{{ obj.as_ul }}
</ul>
3)
<table>
{{ obj.as_table}}
</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 = "<input type = 'text/>" 标签类的文本展示到页面上,需要在view传值的页面加上
from  django.utils.safestring import mark_safetxt =mark_safe("<input type = 'text/>")

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

Django 之Form相关推荐

  1. Django models Form model_form 关系及区别

    Django models Form model_form 转载于:https://www.cnblogs.com/hellojesson/p/6234636.html

  2. Django的Form表单

    Django的Form表单 Django Form  Form介绍 Form 表单是在前端向后端提交数据最常用的方式,同时在好多场景下都需要对用户的输入进行校验. 以注册为例,Form 需要的三件事: ...

  3. 转载:Django之Form组件

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 + View C ...

  4. django之Form表单

    HTML表单 在HTML中,表单是<form>...</form> 之间元素的集合,它们允许访问者输入文本.选择选项.操作对象和控制等等,然后将信息发送回服务器. 某些表单的元 ...

  5. Django之Form插件

    Django的Form主要具有一下几大功能: 生成HTML标签(自动生成HTML标签项) 验证用户数据(验证数据) HTML Form提交保留上次提交数据(保留上次数据) 初始化页面显示内容(快速显示 ...

  6. Django之Form组件介绍

    --------------------------------------前言------------------------------------ 在进入正题之前,想多说两句; 当我们开始学习一 ...

  7. Django的form组件提交时错误不显示或无法提交

    出现的问题:在学习django的form组件时,对不符合form组件定义的字段无法提交,进而导致无法显示出自定义的错误信息.(因为无法提交就代表着数据没有传给后台,然后你的错误回显是在后台对数据的检验 ...

  8. django.forms生成HTML,第21天,Django之Form组件

    ModelForm 一.Form组件初识 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 mo ...

  9. Django之Form验证clean方法(验证篇六)

    上一篇:Django之Form验证select的choice选项数据从数据库实时调用(验证篇五)点击跳转 目录篇:Django之Form及ModelForm目录篇 点击跳转 下一篇:django之mo ...

最新文章

  1. 初探 开源视频会议 openmeeting
  2. IP、TCP、UDP报文头说明
  3. Android之内存管理-内存监测-内存优化
  4. 为什么 MySQL 回滚事务也会导致 ibd 文件增大?
  5. 1106 Lowest Price in Supply Chain (25)
  6. JAVA ThreadPoolExecutor线程池
  7. linux系列的命令补充
  8. mysql免费框架_MySQL(ORM框架)
  9. Android Studio 设置/更改 SDK 路径
  10. mysql特效_Cocos2d-x学习笔记(16)(常见22种特效)
  11. PHP定义常量define和const的区别
  12. 渗透测试工程师面试题大全(一)
  13. PHP 报错 Resource temporarily unavailable 无法删除上传的资源
  14. 深度学习—利用TensorFlow2实现狗狗品种品种(mobilenet实现)
  15. Altium Designer16 精心总结
  16. 做题两大解题思想 by zyz on 2021/4/11
  17. CGlib、Enhancer、ProxyFactory在springboot中的实现动态代理
  18. Google OR-Tools(一) Get Start
  19. html 字号和像素的关系,一文搞懂CSS中的字体单位大小(px,em,rem...)
  20. 目标检测—基于Yolov5的目标检测项目(学习笔记)

热门文章

  1. 《为什么在多核处理器下需要内存屏障(MenmoryBarrier)?》
  2. Android Touch事件传递机制解析 (推荐)
  3. SQL compute by 的使用
  4. 算法导论 第六章 堆排序 习题6.5-8 k路合并排序
  5. oracle+监控索引使用,ORACLE 监控索引的使用
  6. leetcode算法题--叶值的最小代价生成树
  7. leetcode算法题--计算各个位数不同的数字个数
  8. shell变量加单引号sql_关于shell:在Bash中的命令中扩展变量的单引号
  9. PM-Summit 2019全球产品经理大会北京站即将开幕!
  10. Deformable ConvNets--Part4: Deformable Convolutional Networks