Python编程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一段时间的注册的次数。

总结

以上就是本文关于Python编程django实现同一个ip十分钟内只能注册一次的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:简单了解Python中的几种函数、Python定时器实例代码、Python网络编程详解等,有什么问题可以随时留言,小编会及时回复大家的。

Python 相关文章推荐
在Python的gevent框架下执行异步的Solr查询的教程
Apr 16 Python
python动态性强类型用法实例
May 09 Python
Python作用域用法实例详解
Mar 15 Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
python中的二维列表实例详解
Jun 19 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
什么是python类属性
Jun 10 Python
Django windows使用Apache实现部署流程解析
Oct 12 Python
python中subplot大小的设置步骤
Jun 28 Python
简单了解Python中的几种函数
Nov 03 #Python
python Pygame的具体使用讲解
Nov 03 #Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 #Python
django定期执行任务(实例讲解)
Nov 03 #Python
python嵌套字典比较值与取值的实现示例
Nov 03 #Python
基于Python os模块常用命令介绍
Nov 03 #Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 #Python
You might like
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
JS的数组的扩展实例代码
2008/07/09 Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
浅谈python函数之作用域(python3.5)
2017/10/27 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
个人自我鉴定写法
2013/11/30 职场文书
项目专员岗位职责
2013/12/04 职场文书
团日活动总结报告
2014/06/25 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
入党个人总结范文
2015/03/02 职场文书
工作调动申请报告
2015/05/18 职场文书
行政处罚听证告知书
2015/07/01 职场文书
超市主管竞聘书
2015/09/15 职场文书