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 08 Python
python选择排序算法实例总结
Jul 01 Python
TensorFlow实现MLP多层感知机模型
Mar 09 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
详解django.contirb.auth-认证
Jul 16 Python
python适合人工智能的理由和优势
Jun 28 Python
python绘制多个子图的实例
Jul 07 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
python实现简单遗传算法
Sep 18 Python
python实现简单的名片管理系统
Apr 26 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 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生成excel列序号代码实例
2013/12/24 PHP
PHP内核探索:变量概述
2014/01/30 PHP
php显示时间常用方法小结
2015/06/05 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
pandas取出重复数据的方法
2019/07/04 Python
python如何统计代码运行的时长
2019/07/24 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
武汉高蓝德国际.net机试
2016/06/24 面试题
实习单位推荐信范文
2013/11/27 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
学校端午节活动方案
2014/08/23 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
催款律师函范文
2015/05/27 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
MySQL 5.7常见数据类型
2021/07/15 MySQL
virtualenv隔离Python环境的问题解析
2022/06/21 Python