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的Django框架的dj-scaffold项目
May 30 Python
Python冒泡排序注意要点实例详解
Sep 09 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
解决安装pycharm后不能执行python脚本的问题
Jan 19 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
python实现的自动发送消息功能详解
Aug 15 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
Apr 22 Python
如何在sublime编辑器中安装python
May 20 Python
python访问hdfs的操作
Jun 06 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 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注销代码(session注销)
2012/05/31 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
Python如何读取、写入CSV数据
2020/07/28 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
关于环保的演讲稿
2014/05/10 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
服装店员工管理制度
2015/08/07 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS