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基类函数的重载与调用实例分析
Jan 12 Python
Python中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 Python
Python闭包思想与用法浅析
Dec 27 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
python下PyGame的下载与安装过程及遇到问题
Aug 04 Python
python 正则表达式参数替换实例详解
Jan 17 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
May 26 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
python线程优先级队列知识点总结
Feb 28 Python
TensorFlow的自动求导原理分析
May 26 Python
教你怎么用Python操作MySql数据库
May 31 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
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
php多重接口的实现方法
2015/06/20 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
Linux下python制作名片示例
2018/07/20 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
Python 私有化操作实例分析
2019/11/21 Python
python编写微信公众号首图思路详解
2019/12/13 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
卫校护理专业毕业生求职信
2013/11/26 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
学校运动会广播稿
2014/10/11 职场文书
社区端午节活动总结
2015/02/11 职场文书
甲午大海战观后感
2015/06/02 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python
Python道路车道线检测的实现
2021/06/27 Python
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL