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遍历文件夹并删除特定格式文件的示例
Mar 05 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
python实现八大排序算法(2)
Sep 14 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
Django缓存系统实现过程解析
Aug 02 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 Python
Python 微信公众号文章爬取的示例代码
Nov 30 Python
Python批量将csv文件转化成xml文件的实例
May 10 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
php动态生成函数示例
2014/03/21 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
JS画线(实例代码)
2013/11/20 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
Python functools模块学习总结
2015/05/09 Python
Python解析json文件相关知识学习
2016/03/01 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
python3字符串操作总结
2019/07/24 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
Python中的全局变量如何理解
2020/06/04 Python
python线程优先级队列知识点总结
2021/02/28 Python
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
会计职业生涯规划范文
2014/01/04 职场文书
组织关系转移介绍信
2014/01/16 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
基层工作经验证明样本
2014/11/16 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
Python自动化实战之接口请求的实现
2022/05/30 Python