一 简介 今天咱们来聊聊 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如果不可能则会引发

clean_<fieldname>()在表单子类上调用该方法, 是一个Python对象,而不是表单中提交的原始字符串 cleaned_data

3 表单子类的clean()方法

1 可以执行需要访问多个表单字段的验证。您可以在此处进行检查,例如“如果A提供了字段,则字段B必须包含有效的电子邮件地址”。如果愿意,这个方法可以返回一个完全不同的字典,它将被用作cleaned_data

2 由于字段验证方法已在clean()调用时运行,因此您还可以访问表单的errors属性,该属性包含清除单个字段引起的所有错误。

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的更多相关文章

  1. Django学习之八:forms组件【对form舒心了】

    目录 Django forms组件 bound and unbound form instance forms渲染有关 隐藏一个字段,不渲染它 form 校验 form类 ModelForm 利用Mo ...

  2. Django学习——分页器基本使用、分页器终极用法、forms组件之校验字段、forms组件之渲染标签、forms组件全局钩子,局部钩子

    内容 1 分页器基本使用 2 分页器终极用法 3 forms组件之校验字段 1 前端 <!DOCTYPE html> <html lang="en"> &l ...

  3. Django学习系列之Form基础

     Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...

  4. Django学习笔记(五)—— 表单

    疯狂的暑假学习之  Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path         ...

  5. Django学习笔记(9)—— 开发用户注册与登录系统

    一,项目题目: 开发用户注册与登录系统 该项目主要练习使用Django开发一个用户注册与登录的系统,通过这个项目然后巩固自己这段时间所学习的Django知识. 二,项目需求: 开发一个简单的用户登录与 ...

  6. Django学习笔记(6)——Form表单

    知识储备:HTML表单form学习 表单,在前端页面中属于最常见的一个东西了.基本上网站信息的提交都用到了表单,所以下面来学习Django中优雅的表单系统:Form 表单的主要作用是在网页上提供一个图 ...

  7. Django组件——forms组件

    一.校验字段功能 通过注册用户这个实例来学习校验字段功能. 1.模型:models.py from django.db import models # Create your models here. ...

  8. Python框架之Django学习笔记(十七)

    Django框架之表单(续二) 今天的这篇博客将是Django学习笔记博客的最后一篇,基本每周最少一篇的Django框架学习,坚持到今天也实属不易,当然了,这个框架的学习仅仅是Django框架的基础部 ...

  9. Django学习笔记(20)——BBS+Blog项目开发(4)Django如何使用Bootstrap

    本文学习如何通过Django使用Bootstrap.其实在之前好几个Django项目中已经尝试使用过了Bootstrap,而且都留有学习记录,我已经大概有了一个大的框架,那么本文就从头再走一遍流程,其 ...

随机推荐

  1. iOS 页面之间的转场动画控制器间的转换

    CATransition类实现层的转场动画.你可以从一组预定义的转换或者通过提供定制的CIFilter实例来指定转场效果. 例如:控制器之间的跳转 LoginViewController *myVC ...

  2. Python中正则表达式的巧妙使用

    字符串的匹配查询 re模块中的findall函数可以对指定的字符串进行遍历匹配,获取字符串中所有匹配的子串,并返回一个列表结果.该函数的参数含义如下: findall(pattern, string, ...

  3. 【题解】 bzoj3894: 文理分科 (网络流/最小割)

    bzoj3894,懒得复制题面,戳我戳我 Solution: 首先这是一个网络流,应该还比较好想,主要就是考虑建图了. 我们来分析下题面,因为一个人要么选文科要么选理科,相当于两条流里面割掉一条(怎么 ...

  4. 【SDOI 2017】龙与地下城(组合)

    概率论太难了,不会.但这不能阻止我们过题.相信大家都会一个基于背包的暴力做法,我们可以将其看成是卷积的形式就可以用fft优化了.形式化讲,就是求幂级数$ (\sum\limits_{i = 0}^{x ...

  5. 51nod1236 序列求和 V3 【数学】

    题目链接 51nod1236 题解 用特征方程求得斐波那契通项: \[f(n) = \frac{(\frac{1 + \sqrt{5}}{2})^{n} - (\frac{1 - \sqrt{5}}{ ...

  6. 简易版AC自动机

    为什么说是简易版? 因为复杂度大概是\(O(M*\overline N)\),而似乎还有另一种大概是\(O(M+\sum N)\)的. 不过据说比赛不会卡前一种做法,因为模式串一般不会很长. 那么步入 ...

  7. luogu3385 负环 (spfa)

    我在做spfa的时候,如果有一个点被更新了超过N次,证明这个图里是有负环的. (神TM输出YE5和N0) #include<bits/stdc++.h> #define pa pair&l ...

  8. Android应用程序签名详解

    http://blog.csdn.net/lyq8479/article/details/6401093 本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名.为什么要给应用程序签名 ...

  9. eclipse index 不工作 F3 不能找到头文件

    To add paths containing code to parse, follow these steps :1. Right click on the project2. Select Pr ...

  10. 目标检测网络之 R-FCN

    R-FCN 原理 R-FCN作者指出在图片分类网络中具有平移不变性(translation invariance),而目标在图片中的位置也并不影响分类结果;但是检测网络对目标的位置比较敏感.因此Fas ...