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文件夹与文件的操作实现代码
Jul 13 Python
用Python实现QQ游戏大家来找茬辅助工具
Sep 14 Python
Python获取某一天是星期几的方法示例
Jan 17 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
python django中8000端口被占用的解决
Dec 17 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python实现数字的格式化输出
Aug 01 Python
Python中Numpy和Matplotlib的基本使用指南
Nov 02 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 mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
JavaScript函数详解
2014/11/17 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
js禁止表单重复提交
2017/08/29 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
遗传算法python版
2018/03/19 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
python logging模块的使用详解
2020/10/23 Python
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
运动会广播稿300字
2014/01/10 职场文书
公司司机岗位职责
2014/02/07 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
cf收人广告词大全
2014/03/14 职场文书
社区消防工作实施方案
2014/03/21 职场文书
党员转正党支部意见
2015/06/02 职场文书