Beispiel #1
0
def user_changeemail(request):
    user_changeemail_form = UserChangeEmailForm(request.POST)
    if user_changeemail_form.is_valid():  # 验证输入的新邮箱数据
        email = user_changeemail_form.cleaned_data['email']  # 获取新邮箱

        email_list = UserProfile.objects.filter(
            Q(email=email) | Q(username=email))  # 查询新的邮箱是否在数据库表中
        if email_list:  # 说明这个新邮箱已在数据库中,则无法使用
            return JsonResponse({'status': 'fail', 'msg': '此邮箱已被绑定'})
        else:  # 说明这个新邮箱不在数据库中,可以使用
            # 在发送邮件验证码之前,应该去邮箱验证码表中查找,看看之前有没有往当前这个新邮箱发送过修改邮箱这个类型的验证码
            email_ver_list = EmailVerifyCode.objects.filter(email=email,
                                                            send_type=3)
            if email_ver_list:  # 说明发送过验证码,那么需要获取到新近发送这个一个验证码时间
                email_ver = email_ver_list.order_by('-add_time')[0]
                # 判断当前时间与最近发送的验证码添加时间之差
                if (datetime.now() - email_ver.add_time
                    ).seconds > 60:  # 表示距离上次发送验证码时间大于60秒,可以再次发送
                    send_mail_code(email, 3)
                    # 如果我们重新发送了新的验证码,那么以前最近发的就可以清楚掉
                    email_ver.delete()
                    return JsonResponse({
                        'status': 'ok',
                        'msg': '请去你的新邮箱中获取验证码'
                    })
                else:  # 小于60秒,不需要再次发送验证码
                    return JsonResponse({
                        'status': 'fail',
                        'msg': '请不要重发发送验证码,60秒后再试'
                    })
            else:  # 未发送过验证码
                send_mail_code(email, 3)
                return JsonResponse({'status': 'ok', 'msg': '请去你的新邮箱中获取验证码'})
    else:  # 输入的邮箱信息未通过验证
        return JsonResponse({'status': 'fail', 'msg': '输入邮箱信息错误'})
Beispiel #2
0
def user_register(request):
    if request.method == 'GET':
        # 此处实例化forms类,目的不是为了验证,而是为了使用验证码
        user_register_form = UserRegisterForm()
        return render(request, 'users/register.html',
                      {'user_register_form': user_register_form})
    else:
        # 获取form注册表单数据
        user_register_form = UserRegisterForm(request.POST)
        if user_register_form.is_valid():  # 验证注册的邮箱与密码数据
            # 提取提交的数据
            email = user_register_form.cleaned_data['email']
            password = user_register_form.cleaned_data['password']
            # 到数据库查询注册的账号是否存在
            user_list = UserProfile.objects.filter(
                Q(username=email) | Q(email=email))
            if user_list:  # 注册的账号存在
                return render(request, 'users/register.html',
                              {'mgs': '用户已经存在!!!'})
            else:  # 注册的账号不存在
                user = UserProfile()
                user.username = email
                user.set_password(password)
                user.email = email
                user.save()
                send_mail_code(email, 1)
                return HttpResponse("请尽快登陆你的邮件进行账号激活,否则无法登陆...")
                # return redirect(reverse('index'))
        else:  # 表单数据验证不合法
            return render(request, 'users/register.html',
                          {'user_register_form': user_register_form})
Beispiel #3
0
def user_forget(request):
    if request.method == "GET":
        # 此处实例化forms类,目的不是为了验证,而是为了使用验证码
        user_forget_form = UserForgetForm()
        return render(request, 'users/forgetpwd.html',
                      {'user_forget_form': user_forget_form})
    else:
        # 获取提交的form表单数据
        user_forget_form = UserForgetForm(request.POST)
        if user_forget_form.is_valid():  # 验证表单数据
            email = user_forget_form.cleaned_data['email']  # 获取账号信息
            user_list = UserProfile.objects.filter(
                email=email)  # 根据email到数据库查询用户信息
            if user_list:  # 用户存在
                send_mail_code(email, 2)
                return HttpResponse("请登陆邮箱重置您的密码!!!")
            else:  # 用户不存在
                return render(request, 'users/forgetpwd.html',
                              {'msg': '用户不存在...'})
        else:  # 表单验证不通过
            return render(request, 'users/forgetpwd.html',
                          {'user_forget_form': user_forget_form})