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的几条建议分享
Feb 10 Python
python MySQLdb Windows下安装教程及问题解决方法
May 09 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 Python
python爬取淘宝商品销量信息
Nov 16 Python
python 划分数据集为训练集和测试集的方法
Dec 11 Python
浅谈python常用程序算法
Mar 22 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
python os.listdir()乱码解决方案
Jan 31 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
html5唤起app的方法
2017/11/30 HTML / CSS
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
无工作经验者个人求职信范文
2013/12/22 职场文书
劳资专员岗位职责
2013/12/27 职场文书
医院门卫岗位职责
2013/12/30 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server