django 实现同一个ip十分钟内只能注册一次

简介: 笔记

很多小伙伴都会有这样的问题,说一个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一段时间的注册的次数。

相关文章
|
2月前
|
数据采集 存储 数据可视化
基于python django的智联招聘数据采集与分析系统,有登录注册,可自主选择采集内容
本文介绍了一个基于Python Django框架的智联招聘数据采集与分析系统,该系统具备登录注册功能,允许用户自主选择采集内容,并通过对数据的分析和可视化展示,帮助企业和招聘者优化招聘策略。
基于python django的智联招聘数据采集与分析系统,有登录注册,可自主选择采集内容
|
2月前
|
数据采集 数据可视化 数据挖掘
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
本文介绍了一个基于Python和Django框架,使用Scrapy进行去哪儿网数据采集与分析的项目,包括实现登录注册功能、MD5加密以及通过可视化大屏展示分析结果的综合系统。
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
|
2月前
|
存储 数据库 数据安全/隐私保护
Python Django的学生选课管理系统,实现多用户登录注册,可选课可评课
本文介绍了一个基于Python Django框架开发的多功能学生选课管理系统,该系统具备教师和学生两个角色的权限管理,支持课程管理、成绩录入、选课申请、成绩查询和个人信息管理等功能,并注重数据安全与隐私保护。
Python Django的学生选课管理系统,实现多用户登录注册,可选课可评课
|
2月前
|
数据采集 数据可视化 前端开发
基于python django的当当网书籍数据采集与可视化分析,实现数据采集与可视化分析,有登录注册和后台管理
本文介绍了一个基于Python和Django框架的当当网书籍数据采集与可视化分析项目,该项目实现了数据采集、用户登录注册、后台管理,并利用数据清洗、分析和可视化技术在前端展示分析结果。
基于python django的当当网书籍数据采集与可视化分析,实现数据采集与可视化分析,有登录注册和后台管理
|
4月前
|
Go 调度 Python
Django 视图探秘:FBV与CBV注册方式的异同,揭秘as_view()的执行魔法
Django 视图探秘:FBV与CBV注册方式的异同,揭秘as_view()的执行魔法
|
4月前
|
存储 JavaScript 前端开发
Python Django下的实现注册验证码
摘要: 使用Python生成随机验证码图像,包括干扰线和噪点,保存到静态文件夹,并将验证码文本存储到数据库。数据库表包含ID、验证码图片路径和验证码文本。JavaScript函数`getRandomInt`生成1到300的随机数,用于请求对应数据库条目的验证码和图片。XMLHttpRequest发送POST请求到服务器,视图函数返回指定ID的验证码图片路径,实现验证码的动态刷新。
【django学习】(二)注册新应用与配置settings
【django学习】(二)注册新应用与配置settings
|
关系型数据库 MySQL 数据库
django_连接数据库建立账号注册登陆界面
django_连接数据库建立账号注册登陆界面
126 0
|
数据库 Python
django drf 实现只有超级用户才能注册账号(涉及自定义权限permissions,获取token信息解析token信息)
django drf 实现只有超级用户才能注册账号(涉及自定义权限permissions,获取token信息解析token信息)
|
Python
揭开Django管理后台的神秘面纱,实现Model层的注册
实现Model层的注册 假设一个post应用定义了Topic和Comment两个Model,将它们注册到管理后台是非常简单的。下面来看注册Model的方法: 在admin.py文件中声明:❤️ manage的startapp命令在创建post应用的时候会自动创建admin.py文件,想要把自定义的Model注册到管理后台,就需要在这个文件中进行声明:
94 0
揭开Django管理后台的神秘面纱,实现Model层的注册