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 相关文章推荐
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
基于python实现学生管理系统
Oct 17 Python
python实现将汉字保存成文本的方法
Nov 16 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
将Python文件打包成.EXE可执行文件的方法
Aug 11 Python
django queryset 去重 .distinct()说明
May 19 Python
Python控制台实现交互式环境执行
Jun 09 Python
python如何从键盘获取输入实例
Jun 18 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
dedecms中使用php语句指南
2014/11/13 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
Django 导出 Excel 代码的实例详解
2017/08/11 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
wxPython实现列表增删改查功能
2019/11/19 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
应聘医学检验人员自荐信
2013/09/27 职场文书
高中班主任评语大全
2014/04/25 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
现场活动策划方案
2014/08/22 职场文书
假释思想汇报范文
2014/10/11 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python
python如何读取和存储dict()与.json格式文件
2022/06/25 Python