django 的form登录 注册
1 #!/usr/bin/env python 2 # -*- coding: utf8 -*- 3 #__Author: "Skiler Hao" 4 #date: 2017/3/30 15:40 5 from django.core.exceptions import ValidationError #抛出异常 6 from django import forms 7 from django.forms import fields 8 from django.forms import widgets #内部有插件 用于密码什么二次验证 9 from django.core.validators import RegexValidator #定义正则表达式 10 from respository import models 11 12 13 class RegisterForm(forms.Form): 14 username = fields.CharField( #limit_cjoices_to={"username__in":["alex","egon']} 补充##针对select的所有queryset做筛选,用于foreignkey,manaytomany字段 15 required=True, 16 widget=widgets.TextInput(attrs={'class': "form-control",'placeholder': '用户名为8-12个字符'}), 17 min_length=6, 18 max_length=12, 19 strip=True, 20 error_messages={'required': '标题不能为空', 21 'min_length': '用户名最少为6个字符', 22 'max_length': '用户名最不超过为20个字符'}, 23 ) 24 email = fields.EmailField( 25 required=True, 26 widget=widgets.TextInput(attrs={'class': "form-control",'placeholder': '请输入邮箱'}), 27 strip=True, 28 error_messages={'required': '邮箱不能为空', 29 'invalid':'请输入正确的邮箱格式'}, 30 ) 31 pwd = fields.CharField( 32 widget=widgets.PasswordInput(attrs={'class': "form-control",'placeholder': '请输入密码,必须包含数字,字母,特殊字符'},render_value=True), 33 required=True, 34 min_length=6, 35 max_length=12, 36 strip=True, 37 validators=[ 38 # 下面的正则内容一目了然,我就不注释了 39 RegexValidator(r'((?=.*\d))^.{6,12}$', '必须包含数字'), 40 RegexValidator(r'((?=.*[a-zA-Z]))^.{6,12}$', '必须包含字母'), 41 RegexValidator(r'((?=.*[^a-zA-Z0-9]))^.{6,12}$', '必须包含特殊字符'), 42 RegexValidator(r'^.(\S){6,10}$', '密码不能包含空白字符'), 43 ], #用于对密码的正则验证 44 error_messages={'required': '密码不能为空!', 45 'min_length': '密码最少为6个字符', 46 'max_length': '密码最多不超过为12个字符!',}, 47 ) 48 pwd_again = fields.CharField( 49 #render_value会对于PasswordInput,错误是否清空密码输入框内容,默认为清除,我改为不清楚 50 widget=widgets.PasswordInput(attrs={'class': "form-control",'placeholder': '请再次输入密码!'},render_value=True), 51 required=True, 52 strip=True, 53 error_messages={'required': '请再次输入密码!',} 54 55 ) 56 57 def clean_username(self): 58 # 对username的扩展验证,查找用户是否已经存在 59 username = self.cleaned_data.get('username') 60 users = models.User.objects.filter(username=username).count() 61 if users: 62 raise ValidationError('用户已经存在!') 63 return username 64 65 def clean_email(self): 66 # 对email的扩展验证,查找用户是否已经存在 67 email = self.cleaned_data.get('email') 68 email_count = models.User.objects.filter(email=email).count() #从数据库中查找是否用户已经存在 69 if email_count: 70 raise ValidationError('该邮箱已经注册!') 71 return email 72 73 def _clean_new_password2(self): #查看两次密码是否一致 74 password1 = self.cleaned_data.get('pwd') 75 password2 = self.cleaned_data.get('pwd_again') 76 if password1 and password2: 77 if password1 != password2: 78 # self.error_dict['pwd_again'] = '两次密码不匹配' 79 raise ValidationError('两次密码不匹配!') 80 81 def clean(self): 82 #是基于form对象的验证,字段全部验证通过会调用clean函数进行验证 83 self._clean_new_password2() #简单的调用而已 84 85 86 class loginForm(forms.Form): 87 username = fields.CharField( 88 required=True, 89 widget=widgets.TextInput(attrs={'class': "form-control",'placeholder': '请输入用户名'}), 90 min_length=6, 91 max_length=12, 92 strip=True, 93 error_messages={'required': '用户名不能为空',} 94 ) 95 96 pwd = fields.CharField( 97 widget=widgets.PasswordInput(attrs={'class': "form-control",'placeholder': '请输入密码'}), 98 required=True, 99 min_length=6, 100 max_length=12, 101 strip=True, 102 error_messages={'required': '密码不能为空!',} 103 ) 104 105 def clean(self): 106 username = self.cleaned_data.get('username') 107 pwd = self.cleaned_data.get('pwd') 108 user = models.User.objects.filter(username=username).first() 109 if username and pwd: 110 if not user : 111 112 # self.error_dict['pwd_again'] = '两次密码不匹配' 113 raise ValidationError('用户名不存在!') 114 elif pwd != user.password: 115 raise ValidationError('密码不正确!') 116 117 forms.py
转载于:https://www.cnblogs.com/qlshao/p/8504450.html
django 的form登录 注册相关推荐
- Django写一个登录注册---001创建项目以及设计数据库
Djanog开发小项目实践,众所周知,一个产品往往需要登录注册这些功能,所以我这里实现一下登录注册的开发. 使用pycharm(专业版)创建一个django项目,不是专业版看不到创建django的字样 ...
- Django1.6 用Form实现注册登录注销修改密码(含代码!)
参照了潘军杰的博客,但他Django版本有点老了,改动了不少东西,总体来说参考价值还是很大的,点http://www.2goo.info/blog/panjj/Django/2010/06/05/94 ...
- Django练习——基于Mysql的登录注册功能界面(django模型、模板、表单简单应用)
目录 1.创建 2.配置Mysql (1)连接数据库驱动 (2)创建表格 (3)创建迁移文件并同步到数据库 3.admin后台 (1)创建超级用户 (2)注册模型login_msg 4.路由与视图 4 ...
- 【Django 开发】面试招聘信息网站(用户登录注册投在线递简历)
该文章收录专栏 -Django从(图文并茂轻松上手教程)专栏-!! ??内容: [Djang | 增删改查]学生系统案例 [Django | 项目搭建]快速搭建自己的项目 [Django | alla ...
- Django+xadmin 打造线上教育平台(二)登录-注册(重制)
Django+xadmin 打造线上教育平台(二) 一.首页 1)views.py/index函数: def index(request):"""首页"&quo ...
- django的登录注册系统
摘要 django框架本身自带有登录注册,也可以自己写登录注册,下面将介绍这这2种方式实登录注册 一.自己写登录注册登出 1.注册regist 注册采用的是form表单,提交到数据库,在登录的时候,查 ...
- Django(二)精美博客搭建(1)实现登录/注册功能
前言 之前我们用Django框架做了一个很简单的个人博客搭建,不论是页面还是功能都很粗糙 所以从这篇开始我打算做一个比较完整的[个人博客网站],可能会分好几篇博客来讲述 等所有功能完善的差不多后,再考 ...
- Django实现auth模块下的登录注册与注销
本文已发现bug,空密码可注册,空用户名报错等 及新功能,js警告空密码,用户名已被注册,密码账号错误等信息 已更新到文章:https://blog.csdn.net/s_kangkang_A/art ...
- Django相关操作(连续跳转和登录注册为例)
虚拟环境的安装(VIRTUALENV) 安装virtualenv pip install virtualenv 创建虚拟环境 在本地创建一个叫env的文件夹,并且Cd到该文件夹下输入: virtual ...
最新文章
- java 构建是什么意思_构建的概念
- Http协议中的方法
- 使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈
- mysql 下载到其他盘中_MYSQL 如果把数据文件保存到其他磁盘里
- 业务类型创业公司,最好不要招程序员
- Java折叠_[Java教程]Jquery中菜单的展开和折叠
- 2013下半年(11月)信息系统项目管理师考试题型分析(综合知识、案例分析、论文)...
- failed to load resource the server responded with a status of 500 (internal server error)
- saveToken介绍二
- entity cannot be tracked
- 前端作品-漫威英雄响应式网站
- 深圳市居住证查询、办理政府网址
- win10网络诊断为DNS服务器未响应,Windows10网络诊断DNS服务器未响应的解决办法
- Java校验手机号格式
- matlab rti dds,[译]*RTI_DDS测试
- 100个python算法超详细讲解:委派任务
- 《指数基金投资指南》读书笔记_2022002
- 产品经理如何做好需求调研
- docker守护式安装tomcat(汤姆猫)报错:Error starting userland proxy: listen tcp 0.0.0.0:8888: bind: address alrea
- 如何查看自己电脑应该买什么样的内存条