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实现的简单万年历例子分享
Apr 25 Python
python使用htmllib分析网页内容的方法
May 08 Python
python 实时遍历日志文件
Apr 12 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
pycharm 将python文件打包为exe格式的方法
Jan 16 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
关于python中plt.hist参数的使用详解
Nov 28 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
Python 调用C++封装的进一步探索交流
Mar 04 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 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
javascript第一课
2007/02/27 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
node中的session的具体使用
2018/09/14 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
详解Python的单元测试
2015/04/28 Python
使用Python &amp; Flask 实现RESTful Web API的实例
2017/09/19 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
Python将string转换到float的实例方法
2019/07/29 Python
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
办公室主任职责范文
2013/11/08 职场文书
优秀企业获奖感言
2014/02/01 职场文书
副处级干部考察材料
2014/05/17 职场文书
暑期实践个人总结
2015/03/06 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python