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在多玩图片上下载妹子图的实现代码
Aug 13 Python
python 获取网页编码方式实现代码
Mar 11 Python
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 Python
python利用标准库如何获取本地IP示例详解
Nov 01 Python
python和shell获取文本内容的方法
Jun 05 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
基于数据归一化以及Python实现方式
Jul 11 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
Python实现的企业粉丝抽奖功能示例
Jul 26 Python
Tensorflow tf.tile()的用法实例分析
May 22 Python
LeetCode189轮转数组python示例
Aug 05 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 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
Python中super的用法实例
2015/05/28 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
xxx同志考察材料
2014/02/07 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
结婚保证书范文
2014/04/29 职场文书
创业培训计划书
2014/05/03 职场文书
公司离职证明标准范本
2014/10/05 职场文书
单位委托书
2014/10/15 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android