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使用matplotlib实现在坐标系中画一个矩形的方法
May 20 Python
Python判断文件和文件夹是否存在的方法
May 21 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
django中的HTML控件及参数传递方法
Mar 20 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
Python数据类型之List列表实例详解
May 08 Python
Python的条件锁与事件共享详解
Sep 12 Python
详解python播放音频的三种方法
Sep 23 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
从python读取sql的实例方法
Jul 21 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
第三章 php操作符与控制结构代码
2011/12/30 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
golang与PHP输出excel示例
2016/07/22 PHP
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
vue获取DOM元素并设置属性的两种实现方法
2017/09/30 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python内置函数的用法实例教程
2014/09/08 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
Python实现的质因式分解算法示例
2018/05/03 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
技术总监个人的自我评价范文
2013/12/18 职场文书
小学生考试获奖感言
2014/01/30 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
财产公证书
2014/04/10 职场文书
幸福中国演讲稿
2014/09/12 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
写给导师的自荐信
2015/03/06 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书