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 11 Python
Python多线程编程(七):使用Condition实现复杂同步
Apr 05 Python
Python+Django搭建自己的blog网站
Mar 13 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
May 30 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
Python Django 命名空间模式的实现
Aug 09 Python
jupyter notebook运行命令显示[*](解决办法)
May 18 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
python为什么会环境变量设置不成功
Jun 23 Python
python list等分并从等分的子集中随机选取一个数
Nov 16 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
php初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
Python with的用法
2014/08/22 Python
Python中使用PIPE操作Linux管道
2015/02/04 Python
简单实现python爬虫功能
2015/12/31 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
Django自定义manage命令实例代码
2018/02/11 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
Python配置文件处理的方法教程
2019/08/29 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
幼儿园新学期寄语
2014/01/18 职场文书
小学美术教学反思
2014/02/01 职场文书
党员服务承诺书
2014/05/28 职场文书
应届生求职信范文
2014/06/30 职场文书
技术入股合作协议书
2014/10/07 职场文书
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers