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 相关文章推荐
Django中处理出错页面的方法
Jul 15 Python
python snownlp情感分析简易demo(分享)
Jun 04 Python
Python利用递归和walk()遍历目录文件的方法示例
Jul 14 Python
Centos下实现安装Python3.6和Python2共存
Aug 15 Python
python用列表生成式写嵌套循环的方法
Nov 08 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
python Cartopy的基础使用详解
Nov 01 Python
python中pyplot基础图标函数整理
Nov 10 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
Python自动化爬取天眼查数据的实现
Jun 15 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 多维数组排序实现代码
2009/08/05 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
javascript关于继承解析
2016/05/10 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
python脚本第一行如何写
2020/08/30 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
出纳会计岗位职责
2014/03/12 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
实验心得体会范文
2016/01/25 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS