文档章节

django form表单验证入门

原谅我的突然
 原谅我的突然
发布于 2015/12/26 23:35
字数 405
阅读 97
收藏 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
博文 13
码字总数 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
65
0
七日Python之路--第十二天(Django Web 开发指南)

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

明天以后
2014/08/09
0
0
第七章 表单

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

阿帆提
2016/11/10
4
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
0
Django学习笔记之——Forms

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

临峰不畏
2015/03/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

移除或自定义 WordPress 仪表盘欢迎面板

第一次登录 WordPress 后台仪表盘页面,默认都会显示 WordPress 的欢迎面板: 如果我们要移除这个面板,在主题的 functions.php 中添加下面的代码即可: 12 //移除 WordPress 仪表盘欢迎面...

james_laughing
20分钟前
0
0
HashMap实现原理及源码分析

HashMap实现原理及源码分析   哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,...

DemonsI
23分钟前
0
0
eggjs学习笔记

快速初始化 生成项目(要求最低的node版本8.x) npm i egg-init -gegg-init egg-example --type=simplecd egg-examplenpm i 启动项目 npm run dev 配置 环境配置会覆盖默认配置 config...

别人说我名字很长
26分钟前
1
0
Winform Timer控件时间间隔

sender as System.Timers.Timer).Interval = 23 * 60 * 60 * 1000.0;//将时间间隔改为23小时,23小时后重新发生timer_Elapsed事件。 //60000:时间间隔1分钟,300000:时间间隔5分钟,600000:...

笑丶笑
27分钟前
0
0
在win10系统下怎样快速切换任务视图

切换窗口:Alt + Tab 任务视图:Win + Tab (松开键盘界面不会消失) 切换任务视图:Win + Ctrl +左/右 创建新的虚拟桌面:Win + Ctrl + D 关闭当前虚拟桌面:Win + Ctrl + F4...

SummerGao
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部