上一篇文章,django 实现同一个ip十分钟内只能注册一次 的时候,我们在注册的时候选择使用的使我们的数据库来报错我们的注册的ip信息,可是如果数据量大,用户多的时候,单单靠我们的数据库

来储存我们的注册的ip地址信息。   而使用redis来存储的话,这样我们就少了一张表,少了数据库查询,你要是开发经验多了,就明白这里少用数据库查询的好处了,会减少很大的数据库压力。

 那么我们现在来试着去构思我们的注册的内容,思路:

  注册,用户post数据》取到ip去redis去判断,存在》十分钟内不能注册提示

   注册,用户post数据》取到ip去redis去判断,不存在》注册,在redis中去存储这个ip信息过期时间为600s

  

    接下来就是去实现我们的代码了。

   

import redis
r=redis.Redis(host='127.0.0.1',port=6379,db=0)
class RegView(View):
def get(self,request):
return render(request,'reg.html')
def post(self,request):
ipreques = request.META['REMOTE_ADDR']
ip_re = r.get(ipreques)
if ip_re:
return render(request, 'reg.html', {'msg': u'10分钟只能注册一次'})
username=request.POST['username']
if len(getuser(username))<=0:
return render(request,'reg.html',{'msg':u'用户名应该是6-16组成'})
passwor1 = request.POST['password']
passwor2 = request.POST['password1']
shouj = request.POST['shouji']
if len(getPhoneNumFromFile(shouj))<=0:
return render(request, 'reg.html', {'msg':u'手机号格式是否正确'})
shouji = User.objects.filter(mobile__exact=shouj)
if shouji:
return render(request, 'reg.html', {'msg': u'手机号已经存在'})
youjian = request.POST['email']
if len(getMailAddFromFile(youjian))<=0:
return render(request, 'reg.html', {'msg': u'邮箱格式是否正确'})
use=User.objects.filter(username__exact=username)
if use:
return render(request,'reg.html',{'msg':u'用户名已经存在'})
else:
if passwor1==passwor2:
use1=User()
use1.username=username
use1.password=make_password(passwor1)
use1.mobile=shouj
use1.email=youjian
use1.save()
r.set(ipreques,1,ex=600)
return HttpResponseRedirect('login')
else:
return render(request,'reg.html',{'msg':u'请查看密码是否一致'})

代码实现后,我们需要进行去验证, 首次注册成功,

  我们来看看redis存没有

  再次注册

这样我们的redis版本的登录注册已经实现完毕。

最新文章

  1. 通过top命令发现plymouthd进程cpu负载达到近100% 解决办法
  2. 《ASP.NET1200例》在DataList里编辑和删除数据
  3. HTML--表单,图片热点,网页划区和拼接
  4. C# 输出pdf文件流在页面上显示
  5. 在线重定义(Rdefine Table online)
  6. VMware 命令行下的网络配置
  7. Ajax乱码问题
  8. NodeJS下载文件实例
  9. Atom 编辑器试用
  10. Html5模拟通讯录人员排序(sen.js)
  11. Dev控件学习-GridControl中的BandGridview导出多层行头操作
  12. 位图索引(Bitmap Index)的故事
  13. 玩转Spring MVC(五)----在spring中整合log4j
  14. canvas 实现刮刮乐
  15. gradle修改apk包名和apk文件名
  16. STL next_permutation 算法原理和自行实现
  17. AppManager
  18. jquery的fadeTo方法的淡入淡出轮播图插件
  19. 20155217 2016-2017-2 《Java程序设计》第9周学习总结
  20. FileSystemWatcher 监视指定目录中的变更

热门文章

  1. 初次就这么给了你(Django-rest-framework)
  2. 指定路径下建立Access数据库并插入数据
  3. AngularJS系列-翻译官网
  4. 使用VMware Workstation Pro 12 虚拟机安装Mac OS系统教程 全程图解
  5. crontab的两大坑:百分号和环境变量
  6. hdu 2609 How many 最小表示法
  7. 线段树专题—ZOJ1610 Count the Colors(涂区间,直接tag标记)
  8. Redis 的安装与使用
  9. Java并发(一、概述)
  10. Monit : 开源监控工具介绍