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一段时间的注册的次数。

以上这篇django实现同一个ip十分钟内只能注册一次的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅谈python中的正则表达式(re模块)
Oct 17 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
Feb 13 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
Python中常用的高阶函数实例详解
Feb 21 Python
在python3中实现更新界面
Feb 21 Python
Django中文件上传和文件访问微项目的方法
Apr 27 Python
Python如何定义接口和抽象类
Jul 28 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 Python
python3字符串输出常见面试题总结
Dec 01 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 #Python
python使用PyCharm进行远程开发和调试
Nov 02 #Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 #Python
详解Python里使用正则表达式的ASCII模式
Nov 02 #Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
Nov 02 #Python
python中实现精确的浮点数运算详解
Nov 02 #Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 #Python
You might like
php旋转图片90度的方法
2013/11/07 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
smarty表格换行实例
2014/12/15 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
JS实现前端动态分页码代码实例
2020/06/02 Javascript
Python中__new__与__init__方法的区别详解
2015/05/04 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Python函数中的函数(闭包)用法实例
2016/03/15 Python
python基础教程之匿名函数lambda
2017/01/17 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
适用于所有创业者的创业计划书
2014/02/05 职场文书
十八届三中全会学习方案
2014/02/16 职场文书
学期个人工作总结
2015/02/13 职场文书
预备党员转正意见
2015/06/01 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
Java对文件的读写操作方法
2022/04/29 Java/Android
Go语言测试库testify使用学习
2022/07/23 Golang