文档章节

django form表单验证入门

原谅我的突然
 原谅我的突然
发布于 2015/12/26 23:35
字数 405
阅读 82
收藏 0
点赞 0
评论 0

        当我们在使用Django Form的时候 ,    Django默认的Required,max_length,min_length等只提供了基本需求,但满足不了其它验证需求: 比如说注册的时候 密码和确认密码是否相同,登陆时用户名和密码是否正确等等

      下面给出了一个简单的登录验证功能:

from django.shortcuts import render
from django.http import HttpResponse
from django.core.exceptions import ValidationError
from django import forms
from Default.models import Users

# Create your views here


#Define Login form 
class sign_in_form(forms.Form):
	email=forms.EmailField(required=True,error_messages={'required':u'邮箱不能为空','invalid':u'请输入正确的邮箱'})
	password=forms.CharField(required=True,error_messages={'required':u'密码不能为空','invalid':u'请输入正确的邮箱'})
	remember=forms.BooleanField()

	#验证模块
	def clean(self):
		#获取表单数据
		cleaned_data=self.cleaned_data

		#最好使用cleaned_data.get("email")替代cleaned_data["email"]  这样当传入空值 就不会报错
		data_email=cleaned_data.get("email")
		data_password=cleaned_data.get("password")
		if data_email:
			is_exist=Users.objects.filter(email=data_email,password=data_password).exists()
			if not is_exist:
				self._errors['password'] = self.error_class([u"用户名或密码错误!"])

		#无论做了什么验证 data始终要传回去,否则就失去form data了
		return cleaned_data

登录方法体:

def login(req):
	if req.method == 'POST':
		form=sign_in_form(req.POST)
		print(form)
		if form.is_valid():
			return index(req)
		else:
			return render(req,'signin.html',{'form':form})
	else:
		return render(req, 'signin.html')

前端Html代码:

            <div class="box">
                <form method="post" id="form">
                    <div class="content-wrap">
                        <h6>Sign Up</h6>                  
                        <input class="span12" name="email" type="text" value="{{form.email.value}}" placeholder="E-mail address" />
                        <input class="span12" name="password1" type="password" placeholder="Password" />
                        <input class="span12" name="password2" type="password" placeholder="Confirm Password"/>
                        <div id="error_div">
                        <!--遍历传回表单数据中,将其中的错误信息显示出来-->
                        {%for field in form%}
                            {{field.errors}}
                        {%endfor%}
                        </div> 
                        <div class="action">
                            <input type="submit" class="btn-glow primary signup" value="Sign up"></input>
                        </div>        
                    </div>
                </form>
            </div>


© 著作权归作者所有

共有 人打赏支持
原谅我的突然
粉丝 1
博文 12
码字总数 1527
作品 0
闵行
程序员
Django Form 详解

构建1个表单: 1、新建1个 forms.py 模块,并导入 django.forms 模块 2、在 forms.py 模块中定义1个 form 类,和 moldes 类 相似 3、在 views.py 导入forms.py模块, 并实例化1个 form 表单对...

明月知心 ⋅ 2016/12/23 ⋅ 0

Django --Form

1、不使用Form表单 获取前端数据方式 name = request.POST['name'] name = request.POST.get['name'] 2、使用Form表单 def comment_post(request): try: comment_form = if commentform.isva......

aaa奇奇aaa ⋅ 2016/12/23 ⋅ 0

第七章 表单

第七章 表单 从Google的简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接 口,HTML表单一直是交互性网站的支柱。 本章介绍如何用Django对用户通过表单提交的数据进行...

阿帆提 ⋅ 2016/11/10 ⋅ 0

七日Python之路--第十二天(Django Web 开发指南)

《Django Web 开发指南》。貌似使用Django1.0版本,基本内容差不多,细读无妨。地址:http://www.jb51.net/books/76079.html (一)第一部分 入门 (1)内置数字工厂函数 int(12.34)会创建一...

明天以后 ⋅ 2014/08/09 ⋅ 0

Django学习笔记之——Forms

前面学习的都只是如何显示数据,但一直没有关于如何响应用户提交的数据。 表单,是在web中,用户与服务器交互的重要途径。 import django.forms form django import forms 之间的区别是什么?...

临峰不畏 ⋅ 2015/03/06 ⋅ 0

Python(7)——Django之表单

在之前hello python的例子中: from django.http import HttpResponse HttpRequest有一些参数和属性我们需要了解下,包括URL相关信息(如请求路径、主机地址、是否通过https访问)、request.M...

贺路的路 ⋅ 2013/09/26 ⋅ 0

Django - Form表单 和 Form验证

Form表单 HTML表单是网站交互性的经典方式。 HTTP请求: HTTP协议以“请求->回复”的方式工作。客户发送请求时,可以在请求中附加数据。 服务器通过解析请求,就可以获得客户传来的数据,并根...

廖马儿 ⋅ 2017/10/31 ⋅ 0

Django - 如何处理前端的ajax form submit 请求?通过json返回处理结果,不要重定向(redirect)

问题背景 在web应用开发中,经常遇到需要诸如用户注册提交个人信息,或者录入商品信息的需求。在浏览器上一般以一个Form表单来包含用户所有需要输入的控件。那么浏览器需要在用户输入完所有信...

fall4u ⋅ 01/09 ⋅ 0

小司机带你学: Django+Xadmin打造在线教育平台[Python2&3通用 ](六)4-10

6-4 用form实现登录-1 上面我们的用户登录的方法是基于函数来做的。本节我们做一个基于类方法的版本。 要求对类的继承有了解。 基础教程中基本上都是基于函数来做的,其实更推荐基于类来做。...

天涯明月笙 ⋅ 01/22 ⋅ 0

windows上Python开发--3.Django的基础知识

最近两天下了班,没事学习了django的开发,今天做个总结。其实大家可以从百度,google搜到一些django的入门视频,初步了解一下django的框架。学习一些基础的概念和知识。本篇主要是对自己这两...

jackxu2015 ⋅ 2015/08/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 43分钟前 ⋅ 0

Spring JavaConfig 注解

JavaConfig注解允许开发者将Bean的定义和配置放在Java类中。它是除使用XML文件定义和配置Bean外的另一种方案。 配置: 如一个Bean如果在XML文件可以这样配置: <bean id="helloBean" class="...

霍淇滨 ⋅ 50分钟前 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 51分钟前 ⋅ 0

Confluence 6 重新获得站点备份文件

Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中。你需要自己访问你安装的 Confluence 服务器,并且从服务器上获得这个文件。 运行从 Confluence...

honeymose ⋅ 56分钟前 ⋅ 0

informix的常用SQL语句

1、创建数据库 eg1. 创建不记录日志的库testdb,参考语句如下: CREATE DATABASE testdb; eg2. 创建带缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解...

wangxuwei ⋅ 今天 ⋅ 0

matplotlib画图

最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数。 from pylab import *from numpy import *x = linspace(0, 5, 10)y = x ** 2figure()plot(x, y, 'r')...

Dr_hu ⋅ 今天 ⋅ 0

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 今天 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 今天 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部