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中requests小技巧
May 10 Python
利用Python实现网络测试的脚本分享
May 26 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
好的Python培训机构应该具备哪些条件
May 23 Python
Python列表解析配合if else的方法
Jun 23 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
Python 获取ftp服务器文件时间的方法
Jul 02 Python
python实现爬取百度图片的方法示例
Jul 06 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
Aug 07 Python
Anaconda使用IDLE的实现示例
Sep 23 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
php遍历CSV类实例
2015/04/14 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
打开电脑上的QQ的python代码
2013/02/10 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python实现简易Web爬虫详解
2018/01/03 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
python 字符串常用方法汇总详解
2019/09/16 Python
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
加多宝凉茶广告词
2014/03/18 职场文书
学生会竞聘书范文
2014/03/31 职场文书
一年级评语大全
2014/04/23 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
行政求职信
2014/07/04 职场文书
出国留学自荐信模板
2015/03/06 职场文书
如何通过cmd 连接阿里云服务器
2022/04/18 Servers
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript