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编写脚本使IE实现代理上网的教程
Apr 23 Python
Django 前后台的数据传递的方法
Aug 08 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
python 字典中文key处理,读取,比较方法
Jul 06 Python
mac安装pytorch及系统的numpy更新方法
Jul 26 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
Selenium的使用详解
Oct 19 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
如何使用python切换hosts文件
Apr 29 Python
python缺失值的解决方法总结
Jun 09 Python
Python基于百度API识别并提取图片中文字
Jun 27 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中的函数嵌套层数限制分析
2011/06/13 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
2012/08/14 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
python实现人脸识别经典算法(一) 特征脸法
2018/03/13 Python
Linux下python制作名片示例
2018/07/20 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
大学生军训自我评价分享
2013/11/09 职场文书
酒店前台接待岗位职责
2013/12/03 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
安全教育日主题班会
2015/08/13 职场文书
MySQL中一条update语句是如何执行的
2022/03/16 MySQL