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 相关文章推荐
django接入新浪微博OAuth的方法
Jun 29 Python
python处理按钮消息的实例详解
Jul 11 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
Python错误处理操作示例
Jul 18 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Django模板Templates使用方法详解
Jul 19 Python
Flask框架单例模式实现方法详解
Jul 31 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
python collections模块的使用
Oct 16 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
PHP中的超全局变量
2006/10/09 PHP
PHP教程 变量定义
2009/10/23 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
浅谈php冒泡排序
2014/12/30 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
JQuery验证工具类搜集整理
2013/01/16 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
Python工程师面试题 与Python Web相关
2016/01/14 Python
python使用super()出现错误解决办法
2017/08/14 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
Python实现注册、登录小程序功能
2018/09/21 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
python mock测试的示例
2020/10/19 Python
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
培训专员岗位职责
2014/02/26 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
婚庆司仪主持词
2014/03/15 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
2014年电教工作总结
2014/12/19 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书