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通过字典dict判断指定键值是否存在的方法
Mar 21 Python
Python中的XML库4Suite Server的介绍
Apr 14 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
python 获取当前目录下的文件目录和文件名实例代码详解
Mar 10 Python
jupyter notebook清除输出方式
Apr 10 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
安装pytorch时报sslerror错误的解决方案
May 17 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
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
php实现留言板功能
2017/03/05 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
改版了网上的一个js操作userdata
2007/04/27 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
Python 错误和异常小结
2013/10/09 Python
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
Python中优化NumPy包使用性能的教程
2015/04/23 Python
python实现求最长回文子串长度
2018/01/22 Python
python 输出所有大小写字母的方法
2019/01/02 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
应届生法律顾问求职信
2013/11/19 职场文书
施工安全生产承诺书
2014/05/23 职场文书
超市店庆活动方案
2014/08/31 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
golang中字符串MD5生成方式总结
2021/07/04 Golang