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简单进程锁代码实例
Apr 27 Python
python实现下载整个ftp目录的方法
Jan 17 Python
Python基础之getpass模块详细介绍
Aug 10 Python
python实现kmp算法的实例代码
Apr 03 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
Jul 23 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
pyinstaller还原python代码过程图解
Jan 08 Python
40行Python代码实现天气预报和每日鸡汤推送功能
Feb 27 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
Python实现随机生成迷宫并自动寻路
Jun 13 Python
Python中的 Set 与 dict
Mar 13 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 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
微信支付开发交易通知实例
2016/07/12 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Python实现的批量修改文件后缀名操作示例
2018/12/07 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
Python将字典转换为XML的方法
2020/08/01 Python
pycharm实现猜数游戏
2020/12/07 Python
办公室文书岗位职责
2013/12/16 职场文书
创业计划书六个要素
2013/12/26 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
运动会获奖感言
2014/02/11 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
2015大学生实训报告
2014/11/05 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书