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中操作字符串之replace()方法的使用
May 19 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 Python
详解python3中的真值测试
Aug 13 Python
python实现抽奖小程序
Apr 15 Python
Python面向对象之类的封装操作示例
Jun 08 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
python将字符串转换成json的方法小结
Jul 09 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
python基于opencv检测程序运行效率
Dec 28 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.ini中文版(2)
2006/10/09 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
php实现的验证码文件类实例
2015/06/18 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
Python实现时间序列可视化的方法
2019/08/06 Python
python实现UDP协议下的文件传输
2020/03/20 Python
Django-migrate报错问题解决方案
2020/04/21 Python
详解python程序中的多任务
2020/09/16 Python
python 实现超级玛丽游戏
2020/11/25 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
人事部主管岗位职责
2013/12/26 职场文书
政协调研汇报材料
2014/08/15 职场文书
教师工作失职检讨书
2014/09/18 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS