一 简介 今天咱们来聊聊 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. BZOJ1433[ZJOI2009]假期的宿舍——二分图最大匹配

    题目描述 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回家,而C来看B,C与A不认识.我们假设每个人只能睡和自己直接认 ...

  2. java 使用 WebUploader

    参考: http://blog.csdn.net/finalAmativeness/article/details/54668090 最近项目需要多文件上传. 所以使用了 baidu的 webuplo ...

  3. IDEA如何刷新pom文件

    被新手问到了“IDEA如何刷新pom文件?”这个问题,想来这是一个不好意思问的常犯的错误吧. 在IDEA中,修改了pom.xml文件,添加了依赖以后,一般会弹出以下这个警告来. 点击[Import C ...

  4. MT【50】高中曲线系集大成之双切线法

    [历史使人聪明,诗歌使人机智,数学使人精细,哲学使人深邃,道德使人严肃,逻辑与修辞使人善辩.--- Bacon,Francis] 练习: 评:这道2011高考题的解析做法参考答案也值得一看,但我这边在 ...

  5. 【转】位置式、增量式PID算法C语言实现

    位置式.增量式PID算法C语言实现 芯片:STM32F107VC 编译器:KEIL4 作者:SY 日期:2017-9-21 15:29:19 概述 PID 算法是一种工控领域常见的控制算法,用于闭环反 ...

  6. CodeForces - 669D

    题目链接:http://codeforces.com/problemset/problem/669/D Little Artem is fond of dancing. Most of all dan ...

  7. A1073. Scientific Notation

    Scientific notation is the way that scientists easily handle very large numbers or very small number ...

  8. A1092. To Buy or Not to Buy

    Eva would like to make a string of beads with her favorite colors so she went to a small shop to buy ...

  9. IDEA进行远程调试

    biz-test本地调用测试环境01机器上面的needle项目,卡在查询数据库的地方(Jade停住不走了) 首先配置 相关项目 的服务器端部署jvm参数: 在needle的config.pp.temp ...

  10. servlet3.0获取参数与文件上传代码示例

    转: servlet3.0获取参数与文件上传代码示例 2018年08月26日 20:25:35 苏凯勇往直前 阅读数:98   package com.igeek.servlet;   import ...