文档章节

django form表单验证入门

原谅我的突然
 原谅我的突然
发布于 2015/12/26 23:35
字数 405
阅读 116
收藏 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
Python全栈 Web(Django框架、HttpRequest,csrf跨域攻击)

Djanog 的ORM 自定义查询对象 - objects 声明一个类 EntryManager 继承自models.Manager 允许在EntryManager 的类中添加自定义函数 class EntryManager(models.Manager): def 函数名(self, ...

巴黎香榭
10/22
0
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
第七章 表单

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

阿帆提
2016/11/10
4
0

没有更多内容

加载失败,请刷新页面

加载更多

生物智能与AI——关乎创造、关乎理解(上)

摘要: 原来人工智能跟人类智能有那么深的联系! 几百万年前,第一次人类智能的星火出现在非洲大陆,并且持续发展,最终在大约10万年前在智人的大脑中达到顶峰。作为现代人类,我们只能想象我...

阿里云官方博客
13分钟前
2
0
MiniUi系列 详情逻辑

row是获取的行的数据,通过id去查看对应id的详情,所有数据是在datagrid加载完后的,比如有5条,我可以选中某一条,我也可以把获取到的数据直接传到详情页面,仅就是追加row.xx,row.xx,这样就...

architect刘源源
15分钟前
3
0
android adb实用命令小结

adb的全称为Android Debug Bridge.是android司机经常用到的工具.但是问题是那么多命令写代码已经够费劲了,过段时间在次使用时压根记不住呀.本次的大餐就是为此开篇的.这一次我们不记命令.要用...

天王盖地虎626
19分钟前
2
0
vagrant 虚拟机 磁盘100%解决

在日常开发中,我使用vagrant+VirtualBox搭建开发环境 docker+docker-compose搭建了php+nginx+redis+mysql+ELK(Elasticsearch+Kibana+Logstash+php)+phpredisadmin 但是搭建了环境之后发现磁...

DamienChen
24分钟前
2
0
详解如何用爬虫批量抓取百度搜索多个关键字数据

本文介绍如何使用软件的流程图模式,免费采集百度搜索多个关键字的信息数据。 软件下载网址:www.houyicaiji.com 采集结果预览: 下面我们来详细介绍一下如何使用流程图模式,采集在百度输入...

技术阿飞
26分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部