Python编程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一段时间的注册的次数。

总结

以上就是本文关于Python编程django实现同一个ip十分钟内只能注册一次的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:简单了解Python中的几种函数、Python定时器实例代码、Python网络编程详解等,有什么问题可以随时留言,小编会及时回复大家的。

Python 相关文章推荐
零基础写python爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
Python实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
Python多线程编程(四):使用Lock互斥锁
Apr 05 Python
Python实现把回车符\r\n转换成\n
Apr 23 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
纯用NumPy实现神经网络的示例代码
Oct 24 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
python连接mongodb集群方法详解
Feb 13 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
python使用隐式循环快速求和的实现示例
Sep 11 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 Python
简单了解Python中的几种函数
Nov 03 #Python
python Pygame的具体使用讲解
Nov 03 #Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 #Python
django定期执行任务(实例讲解)
Nov 03 #Python
python嵌套字典比较值与取值的实现示例
Nov 03 #Python
基于Python os模块常用命令介绍
Nov 03 #Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 #Python
You might like
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
如何在PHP中读写文件
2020/09/07 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
python操作oracle的完整教程分享
2018/01/30 Python
Python列表元素常见操作简单示例
2019/10/25 Python
Python递归实现打印多重列表代码
2020/02/27 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
新锐科技Java程序员面试题
2016/07/25 面试题
《尊严》教学反思
2014/02/11 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
小学班主任培训方案
2014/06/04 职场文书
员工规章制度范本
2015/08/07 职场文书