django实现密码加密的注册(数据对象插入)-结合forms表单实现表单验证
forms表单
#_*_coding:utf-8_*_
from django import forms
class regis(forms.Form):
username = forms.CharField(label=u'用户名',min_length=4,max_length=20,error_messages={'required':u'用户名不能为空哦','min_length':u'用户名长度不能小于4位哦','max_length':u'用户名长度不能大于20位哦'})
password = forms.CharField(label=u'密码',min_length=6,max_length=256,widget=forms.PasswordInput,error_messages={'required':u'密码不能为空哦','min_length':u'密码长度不能小于6位哦'})
cpassword = forms.CharField(label=u'确认密码',min_length=6, max_length=256, widget=forms.PasswordInput(attrs={'class':'form-control','placeholder':u'与上面密码保持一致'}),error_messages={'required': u'密码不能为空哦', 'min_length': u'密码长度不能小于6位哦'})
models模型
#coding=utf-8
from django.db import models
class Userinfo(models.Model):
username = models.CharField(unique=True,max_length=20)
password = models.CharField(max_length=256)
def __unicode__(self):
return self.username
views视图
#conding=utf-8
from django.shortcuts import render,redirect
from django.http import HttpResponse,Http404
from forms import *
from models import Userinfo
from hashlib import sha1
def register(request):
if request.method == 'POST':
form = regis(request.POST)
if form.is_valid():
user = form.cleaned_data['username']
pwd = form.cleaned_data['password']
cpwd = form.cleaned_data['cpassword']
# encryption
sh1 = sha1()
sh1.update(pwd.encode('utf-8'))
pwdd = sh1.hexdigest()
if pwd != cpwd:
return redirect('/')
Userinfo.objects.get_or_create(username=user,password=pwdd)
msg='user register success!'
return render(request,'info.html',{'msg':msg})
else:
error_msg = form.errors
return render(request, 'register.html', {'form': form, 'errors': error_msg})
else:
form = regis()
return render(request, 'register.html', {'form': form})
注意视图的次序:这里的逻辑很重要
if request.method == 'POST':
form = regis(request.POST)
if form.is_valid():
使用表单进行数据提交时,不需要指定form的action,自动提交到展示页面的视图,切记注意
先判断是提交信息还是普通访问
如果不是提交信息,那么就打开注册页面同时携带表单对象,如果是post提交,就获取forms表单regis提交上来的信息
再判断表单内容是否符合格式要求,如果符合再判断两次输入的密码是否相等,如果相等则进行数据插入的操作,并且返回info.html页面告知用户注册成功
如果表单内容不符合格式要求,则将forms表单中的非空,长度限制等信息返回到注册页面
注册页面register.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<style type="text/css">
.ff{
margin-top:300px;
margin-left:500px;
}
#log{
background-color:#ccc;
margin:0px auto;
}
</style>
</head>
<body>
<div id="log">
<form method="post" class="ff">
{% csrf_token %}
<table>
<tr><td>{{form.username.label_tag}}</td><td>{{form.username}}</td></tr>
<tr style="color:red"><td>{{errors.username}}</td></tr>
<tr><td>{{form.password.label_tag}}</td><td>{{form.password}}</td></tr>
<tr style="color:red"><td>{{errors.password}}</td></tr>
<tr><td>{{form.cpassword.label_tag}}</td><td>{{form.cpassword}}</td></tr>
<tr style="color:red"><td>{{errors.cpassword}}</td></tr>
<tr><td><input type="reset" value="重置"></td><td style="text-align:right"><input type="submit" value="提交"></td></tr>
</table>
</form>
</div>
</body>
</html>
django实现密码加密的注册(数据对象插入)-结合forms表单实现表单验证的更多相关文章
- django实现密码加密的注册(数据对象插入)
在 django实现密码非加密的注册(数据对象插入)的基础上,我们对视图和注册页面进行了简单修改 视图 from django.shortcuts import render,redirect,ren ...
- django实现密码非加密的注册(数据对象插入)
数据模型 from django.db import models class userinfo(models.Model): username = models.CharField(max_leng ...
- django简单密码加密和效验
通过django自带的类库,来加密解密很方便,下面来简单介绍下: 导入包: from django.contrib.auth.hashers import make_password, check_p ...
- Django之密码加密
通过django自带的类库,来加密解密很方便,下面来简单介绍下: 导入包: from django.contrib.auth.hashers import make_password, check_p ...
- Django -MD5密码加密与登录
直接贴代码 login_reg.py from django.shortcuts import render, redirect from web.forms.login_reg import Reg ...
- django 自定义 密码加密方式 及自定义验证方式
在django1.6中,默认的加密方式是pbkdf_sha256,具体算法不表,一直以来用django的自带用户验证都十分顺手,但如果需要修改默认加密方式为md5,具体方法为: 在settings.p ...
- Oracle 常用的SQL语法和数据对象
一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSE ...
- Oracle---常用SQL语法和数据对象
1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字 ...
- 13flask密码加密
一,了解密码加密方式 密码具有私有性较强的特性,预测密码加密对个人隐私的保护有这非常大的作用.在用flask搭建网站时候若服务器有被攻破的风险,要是用户表中密码字段也被拿走,后果将不堪设想. 在密码保 ...
随机推荐
- 未能加载文件或程序集“WebGrease, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
方法一:在web.config的configuration接点中添加,最好是添加在configuration节点的最后 <runtime> <assemblyBinding xmln ...
- gm picture
console.log("ok") /*var images = require("images");var fs = require("fs&quo ...
- iOS SDK具体解释之NSCopying协议
原创blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=contents 欢迎关注我的iOS SDK具体解释专栏 http://blog.csdn ...
- 华为终端-新浪微博联合创新,3D建模+AR 成就全新社交体验
近日,全球首款搭载3D感知摄像头的手机华为Mate 20发布. 通过Mate 20自带的景深摄像头及麒麟980的NPU加速能力,手机能够在获取物体表面信息后,完成高速的精细化3D建模. 那么,如何让3 ...
- Spring MVC表单提交中文数据出现乱码
http://jiessiedyh.iteye.com/blog/475541 http://bigcat.easymorse.com/?p=474 Spring MVC 教程,快速入门,深入分析 h ...
- Mysql权限体系
1,MySQL权限体系 MySQL 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一个给定服务器中的所有数据库.这些权限存储在mysql.user表中.GRANT ALL ON .和REVO ...
- GoogleMap-------解决不能使用问题
前言:由于中国大部分Android手机中的Google服务都被阉割掉了,所以导致GoogleMap无法使用,可以用一下方法解决. 1.不能使用GoogleMap 2.若手机上装有安装市场之类的软件可搜 ...
- 高通音频 媒体喇叭增益隐藏参数(一个QACT无法修改的参数)
源文件位置:modem_proc\multimedia\audio\avs\src\sndhwg2.c sndhw_init()函数,2520行左右:pm_set_speaker_gain(PM_SP ...
- Ionic 取消自带动画效果
$ionicConfigProvider.views.transition('none'); 或: <ion-view view-title="个人中心" animation ...
- package-cleanup用法
今天升级时候遇到"you could try using package-cleanup --problems to work around the problem ...", 本 ...