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实现Linux下守护进程的编写方法
Aug 22 Python
python搭建虚拟环境的步骤详解
Sep 27 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
django模板结构优化的方法
Feb 28 Python
基于python的socket实现单机五子棋到双人对战
Mar 24 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
Django使用Profile扩展User模块方式
May 14 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
Python turtle编写简单的球类小游戏
Mar 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
php include类文件超时问题处理
2015/02/06 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
专营店会计助理岗位职责
2013/11/29 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
合作投资意向书
2014/04/01 职场文书
教师考核表个人总结
2015/02/12 职场文书