文档章节

django form表单验证入门

原谅我的突然
 原谅我的突然
发布于 2015/12/26 23:35
字数 405
阅读 106
收藏 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
闵行
程序员
我的网站搭建 (第十五天) 用户注册与登录

这几天正好学了Flask的用户注册登录功能设计,发现与Django的使用特别类似,所以学习Flask的同时也加强了我对Django表单的印象。正好网站搭建也差不多更新到用户操作部分了,就索性把Django表...

代码打碟手
09/09
0
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
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
七日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

没有更多内容

加载失败,请刷新页面

加载更多

请在移动端使用 先选择画笔

先选择画笔 请在移动端使用 https://lxz096.github.io/Canvas-/画板.html

壹峰
17分钟前
0
0
getSupportFragmentManager().beginTransaction().add报错cannot resolve method 'add'

getSupportFragmentManager().beginTransaction().add报错cannot resolve method 'add' 是导包的问题,所有包要保持一致,有app下的包,要保证都为app下的包 v4的包要保证都为v4的包...

lanyu96
31分钟前
0
0
linux 安装redis

Redis的安装 http://redis.io/download 官方安装例子 $ wget http://download.redis.io/releases/redis-4.0.11.tar.gz $ tar xzf redis-4.0.11.tar.gz $ cd redis-4.0.11 $ make //启动 $ sr......

苏牧影子
33分钟前
1
0
图(graph)

图(graph) 图是非线性数据结构,是一种较线性结构和树结构更为复杂的数据结构,在图结构中数据元素之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。 1、概念 1.定义 图(g...

星汉
37分钟前
1
0
好用的vue组件

http://elickzhao.github.io/2017/08/vue%E4%B8%80%E4%BA%9B%E7%89%B9%E5%88%AB%E6%9C%89%E7%94%A8%E7%9A%84%E6%8F%92%E4%BB%B6/...

Littlebox
53分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部