django学习~forms
一 简介 今天咱们来聊聊 django强大的表单功能
二 Froms作用
1 自动生成HTML表单元素
2 检查表单数据的合法性
3 如果验证错误,重新显示表单(数据不会重置)
4 数据类型转换(字符类型的数据转换成相应的Python类型)
三 创建
1 forms.py
from django import forms //导入模块
class Form1(forms.Form):
user = forms.CharField()
pwd = forms.CharField()
class Meta:
db_table='info'
verbose_name='info'
verbose_name_plural='info'
def clean(self):
user1=self.cleaned_data["user"]
password=self.cleaned_data["pwd"]
user_model = list(userinfo.objects.all().values_list('name'))
for i in user_model:
if user1 in i:
raise ValidationError("the value is not only")
return self.cleaned_data
userinfo.objects.create(name=user1,password=password)
表单验证 -> forms
通用属性
required 属性 1 默认是非空,必须要填写值,设置required=False 可以不添值提交
label 属性 1 相当于html中的label显示输出
initial 属性 1 设置框内显示的默认初始值 2 在提交到后台时必须重新赋予变量才能进行二次处理 eg initial=datetime.date.toda
Widget 属性 1 渲染 eg widget=forms.Textarea
help_text 属性 1 帮助
error_messages 属性 1 覆盖错误 自定义错误信息 error_messages={'required': 'Please enter your name'} 2 如果标注此属性,则会代替原有报警信息
字段属性
charfield 错误键信息 required,max_length,min_length
DateField 错误键信息 required,invalid
DateTimeField 错误键信息 required,invalid
EmailField 错误键信息 required,invalid
FileField 错误键信息 required,invalid,missing,empty, max_length
IntegerField 错误键信息 required,invalid,max_value, min_value
2 views.py
from myapp.forms import *
关键函数
form.is_valid() //判断整体表单的有效性
form.cleaned_data //表单的对象集合,取值填写key即可
3 template
<form action="." method="post">
{% for field in form %}
{% csrf_token %}
<div>
{{ field.label_tag }}:{{ field }}
{{ field.errors }}
</div>
{% endfor %}
label_tag label标签
field:字段
error:当出现问题时提示错误
csrf_token:防止csrf跨站攻击
四 总结
1 form的本质就是形成自定义表单+一定的验证机制功能
2 表单方法
form.is_valid():验证表单数据是否合法
form.errors:表单的错误以字典形式返回(如果有多个错误,可以循环这个字典,然后传给前端)
form.clean_data:获取表单数据
form.as_p:将表单渲染成P标签
五 验证机制
1 to_python()方法Field是每次验证的第一步。它将值强制转换为正确的数据类型,ValidationError如果不可能则会引发
2 clean_<fieldname>()在表单子类上调用该方法, 是一个Python对象,而不是表单中提交的原始字符串 cleaned_data
3 表单子类的clean()方法
1 可以执行需要访问多个表单字段的验证。您可以在此处进行检查,例如“如果A提供了字段,则字段B必须包含有效的电子邮件地址”。如果愿意,这个方法可以返回一个完全不同的字典,它将被用作cleaned_data。
2 由于字段验证方法已在clean()调用时运行,因此您还可以访问表单的errors属性,该属性包含清除单个字段引起的所有错误。
3 Form.clean()覆盖引发的任何错误都不会与任何字段相关联。它们进入一个特殊的“字段”(称为__all__)
4 针对表单的每个字段重复执行以上值
5 表单子类add_error()方法
add_error('key',ValidationError('msg')/msg') 推荐绑定ValidationError 实例
五 自定义clean验证
方式
class a:
def clean(self)
self.add_error('user',ValidationError('aaaaa'))// 绑定
return self.cleaned_data //返回cleaned_data
template打印
forms.error 一般会打印在页面的顶端
django学习~forms的更多相关文章
- Django学习之八:forms组件【对form舒心了】
目录 Django forms组件 bound and unbound form instance forms渲染有关 隐藏一个字段,不渲染它 form 校验 form类 ModelForm 利用Mo ...
- Django学习——分页器基本使用、分页器终极用法、forms组件之校验字段、forms组件之渲染标签、forms组件全局钩子,局部钩子
内容 1 分页器基本使用 2 分页器终极用法 3 forms组件之校验字段 1 前端 <!DOCTYPE html> <html lang="en"> &l ...
- Django学习系列之Form基础
Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...
- Django学习笔记(五)—— 表单
疯狂的暑假学习之 Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path ...
- Django学习笔记(9)—— 开发用户注册与登录系统
一,项目题目: 开发用户注册与登录系统 该项目主要练习使用Django开发一个用户注册与登录的系统,通过这个项目然后巩固自己这段时间所学习的Django知识. 二,项目需求: 开发一个简单的用户登录与 ...
- Django学习笔记(6)——Form表单
知识储备:HTML表单form学习 表单,在前端页面中属于最常见的一个东西了.基本上网站信息的提交都用到了表单,所以下面来学习Django中优雅的表单系统:Form 表单的主要作用是在网页上提供一个图 ...
- Django组件——forms组件
一.校验字段功能 通过注册用户这个实例来学习校验字段功能. 1.模型:models.py from django.db import models # Create your models here. ...
- Python框架之Django学习笔记(十七)
Django框架之表单(续二) 今天的这篇博客将是Django学习笔记博客的最后一篇,基本每周最少一篇的Django框架学习,坚持到今天也实属不易,当然了,这个框架的学习仅仅是Django框架的基础部 ...
- Django学习笔记(20)——BBS+Blog项目开发(4)Django如何使用Bootstrap
本文学习如何通过Django使用Bootstrap.其实在之前好几个Django项目中已经尝试使用过了Bootstrap,而且都留有学习记录,我已经大概有了一个大的框架,那么本文就从头再走一遍流程,其 ...
随机推荐
- 小程序源码下载[demo整理自github]
微信小程序的火热程度大家都有所了解,也有很多牛人写了不错的小程序,今天ytkah就整理一些github上的小程序开源项目,源码可以直接下载来用,感兴趣的朋友赶紧去看看吧!以下小程序排名按star的数量 ...
- 洛谷P3345 [ZJOI2015]幻想乡战略游戏(动态点分治,树的重心,二分查找,Tarjan-LCA,树上差分)
洛谷题目传送门 动态点分治小白,光是因为思路不清晰就耗费了不知道多少时间去gang这题,所以还是来理理思路吧. 一个树\(T\)里面\(\sum\limits_{v\in T} D_vdist(u,v ...
- NOIP2018退役记
退役失败*1. md可能只有一次啊.
- luogu4933 大师 (dp)
记f[i][j]是以i号为结尾的.公差为j的的个数(不包括只有i的情况) 那么就有$f[i][i-i']=\sum{(f[i'][i-i']+1)}$之类的东西 最后再加个n就行啦 而且公差有可能有负 ...
- Android编程心得-在Assets文件夹中放入.sql文件实现创建SQlite表的操作
当我们在使用SQLiteOpenHelper时,经常使用db.execSQL(String sql)方法写入对应语句实现创建表的操作,这样的确可以实现业务逻辑.与此同时还有一种更灵活的方法,从asse ...
- 【LOJ#6279】数列分块3
题目大意:维护 N 个数组成的序列,支持两种操作:区间加.区间查询某个值的前驱(小于该值的最大值,若无前驱,输出-1). 题解1:可以像分块2一样,维护每个块内元素的一个有序序列,每次查询时二分查找即 ...
- mod(%)之规律(除数与被除数的正负分析)
首先注意“-9 % 4”,根据运算符优先级,负号运算符优先级大于余数(取模),所以执行的是“(-9) % 4”. 其次 % = mod ,只是在不同地方表示方法不同而已. 被除数无论是正数和负数结果都 ...
- win+R快捷启动程序
win10: Win+R cmd:命令行程序 notepad:记事本 winword:word文档 calc:记事本 mspaint:画图 wordpad:写字板
- spring MVC 如何接收前台传入的JSON对象数组
spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json 即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...
- sqlserver 导入数据出现 无法创建 OLE DB 取值函数。请查看列元数据是否有效
我用的是Sql Server 的导入导出功能来实现的,但是有些数据可以导进去,有些就不行.总是出现一些错误! 执行之前 (错误)消息错误 0xc0202005: 数据流任务: 在数据源中找不到列“Un ...