Python编程django实现同一个ip十分钟内只能注册一次
作者:北漂的雷子 发布时间:2023-01-18 17:01:55
标签:python,django
很多小伙伴都会有这样的问题,说一个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一段时间的注册的次数。
来源:http://www.cnblogs.com/leiziv5/p/7774768.html
0
投稿
猜你喜欢
- 本文介绍了redis之django-redis的简单缓存使用,分享给大家,具体如下:自定义连接池这种方式跟普通py文件操作redis一样,代
- 问题创建一个二叉树二叉树有限多个节点的集合,这个集合可能是:空集由一个根节点,和两棵互不相交的,分别称作左子树和右子树的二叉树组成创建二叉树
- 实现代码# batch_handle_image.pyimport argparseimport globimport osfrom PIL
- iframe的防插与强插(一)中介绍了“市面上”能见到的两种防御被第三方网站iframe的方法,以及相应的变态突破方法。貌似把“受害人”逼上
- 1、解决方法(1)忽视元组。缺少类别标签时,通常这样做(假设挖掘任务与分类有关),除非元组有多个属性缺失值,否则该方法不太有效。当个属性缺值
- django ajax发送post请求的两种方法,具体内容如下所述:第一种:将csrf_token放在from表单里 <script&
- 一段非常简单代码普通调用方式def console1(a, b): print("进入函数")
- 一、引子Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下:# coding=UTF-8im
- python全代码如下import reimport csvimport matplotlib.pyplot as pltx=[]y=[]m
- 想必大家都知道MSSQL中SA权限是什么,可以说是至高无上。今天我就它的危害再谈点儿,我所讲的是配合NBSI上传功能得到WebShell。在
- 本文实例讲述了Python脚本实现虾米网签到功能的方法。分享给大家供大家参考,具体如下:概述这个脚本完成了自动登录虾米网、签到的功能。大致要
- 从业这几年,自己写过的和帮人参谋的所谓“设计规范”不少了,这个东西大概在中国的决策层眼里是这么回事儿 - 一帮农民在一块田里种粮食,起先天气
- 目录WSGI基本原理1. WSGI处理过程2. WSGI示例3. WSGI web服务器和应用程序WSGI基本原理1. WSGI处理过程浏览
- 1、处理包含数据的文件最近利用Python读取txt文件时遇到了一个小问题,就是在计算两个np.narray()类型的数组时,出现了以下错误
- 接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n'等特殊字符的两种方式:a)利用转义字
- 这篇文章主要介绍了微信小程序 云开发模糊查询实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 以下均在本人虚拟机上进行1.安装pip3sudo apt install python3-pip2.安装虚拟环境sudo apt insta
- 【OpenCV】⚠️高手勿入! 半小时学会基本操作 ⚠️ 对象测量概述OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大.
- close方法可以释放一个连接的资源,但是不是立即释放,如果想立即释放,那么在close之前使用shutdown方法shut_rd() --
- 首先让我们首先看一个例子。我们知道在*NIX下面,uname命令是查看系统的发行版。可以写这样一个Fabric脚本:from fabric.