django实现同一个ip十分钟内只能注册一次的实例


Posted in Python onNovember 03, 2017

很多小伙伴都会有这样的问题,说一个ip地址十分钟内之内注册一次,用来防止用户来重复注册带来不必要的麻烦

逻辑:

取ip,在数据库找ip是否存在,存在判断当前时间和ip上次访问时间之差,小于600不能注册,到登录界面,大于600可以注册,

设计一个数据库来存储这个ip地址和访问时间,

class Ip(models.Model):
 ip=models.CharField(max_length=20)
 time=models.DateTimeField()
 class Meta:
  verbose_name = u'访问时间'
  verbose_name_plural = verbose_name
 def __str__(self):
  return self.ip

然后去

python manage.py makemigrations

python manage.py migrate

这样来更新我们的数据库,然后我们运行我们的项目可以在后台看到我们新注册的ip的数据

我们根据前面的逻辑,可以来设计我们的代码,

from django.views.generic.base import View
from blog.models import Ip
class RegView(View):
 def get(self,request):
  ipreques = request.META['REMOTE_ADDR']
  try:
   ip_c=Ip.objects.get(ip=ipreques)
   if ip_c :
    if (datetime.datetime.now()-ip_c.time).total_seconds()<600:
     return render(request, 'login.html', {'msg': u'10分钟内只能注册一次'})
    ip_c.time=datetime.datetime.now()
    ip_c.save()
    return render(request, 'reg.html')
  except Exception as e:
   new=Ip()
   new.ip=str(ipreques)
   new.time=datetime.datetime.now()
   new.save()
   return render(request, 'reg.html')
 def post(self,request):
  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=passwor1
    use1.mobile=shouj
    use1.email=youjian
    use1.save()
    return HttpResponseRedirect('login')
   else:
    return render(request,'reg.html',{'msg':u'请查看密码是否一致'})
  return render(request,'reg.html')

其实这样,我们的整个过程就已经构建完毕,代码出来后,有小伙伴会问,你这代码怎么和我用的不一样,

我们都是函数式编程,其实很简单,我们去集成View类就可以实现我们的面向对象的编程,在url中我们只需要这么来写我们的代码。

url(r'^reg$', RegView.as_view(),name='reg'),

这样我们就可以完成了限制同个ip一段时间的注册的次数。

以上这篇django实现同一个ip十分钟内只能注册一次的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python持久性管理pickle模块详细介绍
Feb 18 Python
python连接字符串的方法小结
Jul 13 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
python字符串与url编码的转换实例
May 10 Python
python 生成图形验证码的方法示例
Nov 11 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
Django Celery异步任务队列的实现
Jul 24 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
在python里创建一个任务(Task)实例
Apr 25 Python
Django显示可视化图表的实践
May 10 Python
Pyhton模块和包相关知识总结
May 12 Python
python中pycryto实现数据加密
Apr 29 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 #Python
python使用PyCharm进行远程开发和调试
Nov 02 #Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 #Python
详解Python里使用正则表达式的ASCII模式
Nov 02 #Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
Nov 02 #Python
python中实现精确的浮点数运算详解
Nov 02 #Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 #Python
You might like
php 获得汉字拼音首字母的函数
2009/08/01 PHP
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
在Docker上开始部署Python应用的教程
2015/04/17 Python
python中Apriori算法实现讲解
2017/12/10 Python
Python输出各行命令详解
2018/02/01 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
使用django实现一个代码发布系统
2019/07/18 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
鱼油专家:Omegavia
2016/10/10 全球购物
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
银行会计财务工作个人的自我评价
2013/10/29 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
红色影片观后感
2015/06/18 职场文书
幼儿园教师管理制度
2015/08/05 职场文书