【小白实战】利用django2.0,搭建属于自己的博客(20)


发布时间:2019-02-15 13:08    作者: Uncle Hui   已过去:1 年,1 月   阅读总量:201 已被赞:0


动态注册地址失效的判断:

如果动态注册地址一致有效,就失去了使用动态注册的意义,所以我将时效设定为7天,用户应该在7日内前来完成注册!

#注册
def register(request,code):
    #检查验证码过期没,如果没有就渲染一个注册页面回去
    # 今天的日期
    today = datetime.datetime.now().date()
    #如果验证码距离今天的日期超过7天,就视为注册链接过期,要求其重新获取
    today_s = today - datetime.timedelta(days=7)
    try:
        #查询验证码创建的时间
        code_time = EmailVerifyRecord.objects.get(code=code)
        #如果查出的时间比7天时间大,说明有效,否则判断为过期
        if code_time.send_time.date() >= today_s :
            reg_form = RegisterForm(initial={'email':code_time.email})
            return render(request,'user/zhuce2.html',{'reg_form':reg_form})
        else:
            return render(request, 'user/zhuce_guoqi.html')
    except:
        return render(request,'user/zhuce_guoqi.html')

【通过设置session来限制用户过于频繁的注册请求,以降低服务器负担】

1.settings.py

设置session配置

#设置session
SESSION_ENGINE = 'django.contrib.sessions.backends.db'   # 引入引擎(默认)
SESSION_COOKIE_AGE = 60   # Session的cookie失效日期(60秒)

2.user/views.py

#邮箱获取注册链接
def get_email_yzm(request):
    #如果是POST提交
    if request.method == 'POST':
        #将POST提交的数据给表单验证
        email = EmailForm(request.POST)
        #获取session ,获取不到给空
        get_sess = request.session.get('email',None)
        #若获取不到,说明没在限制时间,允许注册
        #如果验证OK
        if email.is_valid() and get_sess == None :
            #将需要的字段提取出来
            emails = email.cleaned_data['email']
            #把邮箱写进表里,并启动发送邮箱验证码程序
            send_register_eamil(emails,'register')
            #设置session
            request.session['email'] = emails
            context = {
                'email': emails,
                'message': "注册链接已经发送到%s请前往邮箱获取注册地址"%emails
            }
            return render(request, 'user/zhuce.html', context)
        else:

            context = {
                'message':"该邮箱已经注册了,请换一个邮箱吧。如果你刚刚已经获取注册链接,请等待1分钟重新获取,不要频繁操作!"
            }
            return render(request, 'user/zhuce.html', context)
    else:
        email_form = EmailForm()
        context={
            'message':email_form.errors
        }
        return render(request,'user/zhuce.html',context)

【注册表单优化,限制用户更改邮箱,在表单第一个字段里加入】

attrs={'class':'form-control','readonly':"readonly"}

 

点赞

0




登陆后方可评论