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操作MongoDB详解及实例
May 18 Python
利用Python实现网络测试的脚本分享
May 26 Python
Python虚拟环境项目实例
Nov 20 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 Python
python 读取数据库并绘图的实例
Dec 03 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
python 实现两个变量值进行交换的n种操作
Jun 02 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 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在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
python批量导出导入MySQL用户的方法
2013/11/15 Python
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
Python开发常用的一些开源Package分享
2015/02/14 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
python绘制封闭多边形教程
2020/02/18 Python
Python函数参数分类原理详解
2020/05/28 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
美术指导助理求职信
2014/04/20 职场文书
南京青奥会口号
2014/06/12 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
2014年新教师工作总结
2014/11/08 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python