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实现获取照片拍摄日期并重命名的方法
Sep 30 Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
使用keras内置的模型进行图片预测实例
Jun 17 Python
python如何调用java类
Jul 05 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 Python
python3实现飞机大战
Nov 29 Python
一劳永逸彻底解决pip install慢的办法
May 24 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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 文件上传模型,支持多文件上传
2009/08/13 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
javascript的BOM
2016/05/03 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
python同时给两个收件人发送邮件的方法
2015/04/30 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
什么是接口(Interface)?
2013/02/01 面试题
实习生自我鉴定范文
2013/12/05 职场文书
党员干部承诺书
2014/03/25 职场文书
车间核算员岗位职责
2014/07/01 职场文书
投资入股合作协议书
2014/10/28 职场文书
自我推荐信怎么写
2015/03/24 职场文书
三国演义读书笔记
2015/06/25 职场文书
体育委员竞选稿
2015/11/21 职场文书
MySQL索引失效的典型案例
2021/06/05 MySQL
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers