django 基础知识 ~ forms详解
一 简介 今天咱们来聊聊 django强大的表单功能
二 分类
1 ModelFrom ModelFrom只需要声明指定字段,其他的选择继承
2 Froms (我们今天主要推这个)
1 Forms需要声明规定每个字段
2 forms.py文件 BaseForm,Form,DeclarativeFieldsMetaclass
3 froms.py继承了相关字段的属性,所以直接调用文件属性即可
三 Froms作用
1 自动生成HTML表单元素并且检查表单数据的合法性
2 数据类型转换(字符类型的数据转换成相应的Python类型)
四 内容
1字段定义2元数据定义3方法重写
五 表单方法
form=Form({})
1 form.is_valid():#验证表单数据是否合法,返回True/False
注意点 1 如果表单有多余的字段,只要相对应的字段符合要求,依然会返回True
2 form.errors:#输出的是带标签的含有错误内容的格式->字典
注意点
1 后端:取某个字段的错误信息 form.errors.get('key')[index]->这里要注意,可能会有多个错误信息
2 前端:取某个字段的错误信息 error.key.index配合<span>标签
3 后端返回前端的用法 return {error:form.errors}
4 常见报错类型 required,invalid
3 form.cleand_data:#获取表单数据->字典
注意点 1 cleaned_data中的值类型与字段定义的Field类型一致。
2 value=form.clean_data.get方式取值
3 数据存入 model.object.create(**form.cleand_data)
4 前端显示,会将forms标签自带约束校验自动生成label标签
1 form.as_p:#将表单渲染成P标签
2 form.key#取某个字段生成标签
五 字段控制相关
1 默认会自动创建主键,如果不指定
2 max/min_length 控制长度限制,CharFiled必须
3 required 需要默认值,默认不为空
4 error_messages 自定义错误 eg:error_messages={'required/vaild': 'Please enter your name'}(实际并不常用),也可以独立建立字典变量
六 元数据
定义 class Meta类
db_table=''在数据库中真正的表名称
七 示例代码
1 models模块
class User(models.Model):
user=models.CharField(max_length=5)
password=models.CharField(max_length=15)
email=models.CharField(max_length=12)
class Meta:
db_table='User'
2 views模块
def register(request):
if request.method=='POST':
biaodan=UserFrom(request.POST)
if biaodan.is_valid():
User.objects.create(**biaodan.cleaned_data)
return HttpResponse('wae')
else:
form=UserForm()
return render(request,'register.html',locals())
else:
form=UserForm()
return render(request,'register.html',locals())#locals带入本地变量
3 forms模块
class UserFrom(forms.Form):
user=forms.CharField(max_length=15,label='用户名',error_messages={"required":"用户名需要需要"})
password=forms.CharField(max_length=10,label='密码',widget=widgets.PasswordInput(attrs={'class':'form-control'}))
email=forms.CharField(max_length=10,label='邮箱'))
4 前端代码
渲染方法1
<form action="/register/" method="POST">
{% csrf_token %}
<div>
用户名: {{ form.user }}<span>{{ error.user }}</span>
</div>
<div>
密码: {{ form.password }}<span>{{ error.password }}</span>
</div>
<div>
邮箱: {{ form.email }}<span>{{ error.email }}</span>
</div>
<div>
<input type="submit" value="提交" />
</div>
</form>
渲染方法2
<form action="/register/" method="POST">
{% csrf_token %}
{% for filed in form %}
{% endfor %}
渲染方法3
<form action="/register/" method="POST">
{% csrf_token %}
{% for filed in form %}
<div class="form-row">
<label>{{ filed.label }}</label> //显示label字段说明
{{ filed }} //显示字段
{{filed.errors}}//显示错误信息
</div>
{% endfor %}
<input type="submit">
</form>
九 补充
1 两层验证机制 1 前端 2 forms表单
2 自定义约束前端显示属性 weight包
widget=widgets.type(attrs={'class':'form-control'})
转载于:https://www.cnblogs.com/danhuangpai/p/10984420.html
django 基础知识 ~ forms详解相关推荐
- 自学计算机键盘基础知识,刘坚强办公学《新手学五笔打字》1-2 功能键区,电脑键盘功能基础知识按键详解...
原标题:刘坚强办公学<新手学五笔打字>1-2 功能键区,电脑键盘功能基础知识按键详解 下面我们来详细认识电脑键盘的各个按键,先从最上面的功能键区开始,一共有16个键(如图1-2-1所示). ...
- mysql+连接每一行数据_MySQL_深入mysql基础知识的详解,1.每个客户端连接都会从服务 - phpStudy...
深入mysql基础知识的详解 1.每个客户端连接都会从服务器进程中分到一个属于它的线程.而该连接的相应查询都都会通过该线程处理. 2.服务器会缓存线程.因此并不会为每个新连接创建或者销毁线程. 3.当 ...
- 基础知识redis详解--【Foam番茄】
Redis 学习方式: 上手就用 基本的理论先学习,然后将知识融汇贯通 nosql讲解 为什么要用Nosql 现在都是大数据时代 大数据一般的数据库无法进行分析处理了 至少要会Springboot+S ...
- 计算机基础知识及其详解,计算机基础知识详解:计算机入门基础知识
能力训练网权威发布计算机基础知识详解,更多计算机基础知识详解相关信息请访问少儿综合素质训练网. [导语]以下是大范文网整理的计算机基础知识详解,欢迎阅读! 1.第一台计算机-ENIAC 大家只要知道第 ...
- python基础知识~ 函数详解2
python~函数详解2 1 生成器函数 定义 如果函数有yield这个关键字,就是生成器函数.生成器函数() 获取的是生成器,不执行函数 须知 yield和return一样,都可以返回数 ...
- 最全音视频基础知识学习详解(含多个干货链接)
这里将了解到的和一些博客网站讲到的音视频基础相关的内容总结整理到了一起,方便系统的学习和回顾记录. 首先一个最简易的音视频图解,包括一下几个部分: 对于一个实时音视频应用共包括几个环节:采集.编码.前 ...
- Fragment的基础知识介绍详解必看
一.Fragment的基础知识介绍 1.1概述 1.1.1 特性 Fragment是activity的界面中的一部分或一种行为.可以把多个Fragment组合到一个activity中来创建一个多界面 ...
- JSP基础知识学习详解!
JSP基础知识学习 一.JSP是什么 JSP(全称JavaServer Pages)是由[Sun](https://baike.baidu.com/item/Sun Microsystems)公司主导 ...
- 【机器学习】机器学习基础知识常见问题详解!
作者:胡联粤,Datawhale面经小组 Q1 ⽼板给了你⼀个关于癌症检测的数据集,你构建了⼆分类器然后计算了准确率为 98%, 你是否对这个模型满意?为什么?如果还不算理想,接下来该怎么做? 首先模 ...
最新文章
- 数据结构之跳表Skiplist
- linux存储--inode详解(六)
- Flash补间引擎应用:图片特效(2)
- mount挂载windows共享文件夹
- Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。
- ML 自学者周刊:第 3 期
- 标签的宽度_27 表格标签
- Codeforces Round #359 (Div. 2) C. Robbers' watch 搜索
- 非极大值抑制_【计算机视觉——RCNN目标检测系列】三、IoU与非极大抑制
- Money-去哪了每日站立会议
- 一次安装tengine的经历
- CEPH DAYS 2016 APAC ROADSHOW Ceph社区分享资料
- PS 导入笔刷和导入字体和导入滤镜
- 苹果手机个性定制,IPHONE4S手机外壳DIY专属定制,创意设计外壳
- 2440 wince 5.0 BSP之flash驱动分析
- AT-SURF-F437 3D Test
- 瑞禧研究Boc-Val-Dil-Dap及其衍生物(OH/Phe-OMe/Doe/Dap-Nrp/)——抗体药物偶联物
- SOLR7实践(二)--DIH配置及使用
- JAVA String.format详解
- 云服务器租赁维护合同,云服务器 租赁 服务合同
热门文章
- python头文件math.h_将常量从.h文件导入到python中
- 自制树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食,成本300+元...
- Bengio实验室推出开源AI药物研发平台,唐建领队、清北上交学生参与开发
- 美国火星车失联的7分钟,高清视频传回来了
- 今年央视春晚的创意担当,给了这个1岁的拓荒牛机器人
- 3天初版部署7天快速迭代!百度飞桨携手北京地铁落地AI口罩检测方案
- Beta冲刺提交-星期四
- GraphQL 01--- GraphQL 介绍及资源总结
- JSP标签:jsp内置标签、jstl标签、自定义标签
- The Beam Model:Stream Tables翻译(上)