Example #1
0
def user_register(request):
    if request.method == 'GET':
        user_register_form = UserRegisterForm()  # 是为了使用验证码
        # print(user_register_form.captcha )
        return render(request, 'register.html',
                      {'user_register_form': user_register_form})
    else:
        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, 'register.html', {'msg': '用户已经存在'})
            else:
                a = UserProfile()
                a.username = email
                a.set_password(password)
                a.email = email
                a.save()
                send_email_code(email, 1)
                return HttpResponse('请尽快前往您的邮箱激活,否则无法登陆')
                # return redirect(reverse('index'))
        else:
            return render(request, 'register.html',
                          {'user_register_form': user_register_form})
Example #2
0
def user_changeemail(request):
    user_changeeamil_form = UserChangeEmailForm(request.POST)
    if user_changeeamil_form.is_valid():
        email = user_changeeamil_form.cleaned_data['email']
        user_list = UserProfile.objects.filter(
            Q(email=email) | Q(username=email))
        if user_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:
                    email_ver.delete()
                    send_email_code(email, 3)
                    return JsonResponse({'status': 'ok', 'msg': '验证码已发送至邮箱'})
                else:
                    return JsonResponse({
                        'status': 'fail',
                        'msg': '请去邮箱查看验证码或请一分钟后重新发送'
                    })
            else:
                send_email_code(email, 3)
                return JsonResponse({'status': 'ok', 'msg': '验证码已发送至邮箱'})
    else:
        return JsonResponse({'status': 'fail', 'msg': '您的邮箱存在异常'})
Example #3
0
def user_register(request):
    '''这是用户注册的视图'''
    if request.method == 'GET':
        #这里把表单类的实例返回去是为了用验证码
        user_register_from = UserRegisterForm()
        return render(request, 'users/register.html',
                      {'user_register_form': user_register_from})
    else:
        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']
            #Q对象用于处理或关系的查询
            user_list = UserProfile.objects.filter(
                Q(username=email) | Q(email=email))

            if user_list:
                return render(request, 'register.html', {'msg': '用户已经存在'})
            else:
                new_user = UserProfile()
                new_user.username = email
                new_user.set_password(password)
                new_user.email = email
                new_user.save()
                #向用户的邮箱发送验证码,用于激活用户
                send_email_code(email, 1)
                return HttpResponse('请尽快前往您的邮箱激活,否则无法登录')
                #return redirect(reverse('index'))
        #下面是验证不通过的情况
        else:
            return render(request, 'register.html',
                          {'user_register_form': user_register_form})
Example #4
0
    def post(self, request):
        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',
                              {'msg': '用户已经存在'})
            else:
                a = UserProfile()
                a.username = email
                a.set_password(password)
                a.email = email

                # 进行邮箱验证激活
                # 发送邮箱验证码
                if send_email_code(email, 1):
                    a.save()
                    return HttpResponse('情尽快前往邮箱激活账号')
                else:
                    return HttpResponse('注册失败')
                # return redirect('/users/user_login')
        else:
            return render(request, 'users/register.html',
                          {'user_register_form': user_register_form})
Example #5
0
def user_changeemail(request):
    '''
    这是用户修改邮箱的视图。当用户修改邮箱点击获取验证码的时候,会通过这个视图处理,发送邮箱验证码。
    :param request:http请求对象
    :return 返回json数据,在模板页面中处理
    '''
    user_changeemail_form = UserChangeemailForm(request.POST)
    if user_changeemail_form.is_valid():
        email = user_changeemail_form.cleaned_data['email']
        #看看这个邮箱是否已经被占用
        user_list = UserProfile.objects.filter(
            Q(email=email) | Q(username=email))
        if user_list:
            return JsonResponse({'status': 'fail', 'msg': '邮箱已经被绑定'})
        else:
            #查看验证码表中是否已经给这个邮箱发送过send_type为3的邮件
            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:
                    send_email_code(email, 3)
                    #因为已经发了新的,所以旧的就可以删除了
                    email_ver.delete()
                    return JsonResponse({
                        'status': 'ok',
                        'msg': '请尽快去邮箱中获取验证码'
                    })
                else:
                    return JsonResponse({
                        'status': 'fail',
                        'msg': '请不要重复发送验证码,1分钟后重试'
                    })
            #如果从来没有发送过这种验证码,就直接发送
            else:
                send_email_code(email, 3)
                return JsonResponse({'status': 'ok', 'msg': '请尽快去邮箱中获取验证码'})
    else:
        return JsonResponse({'status': 'fail', 'msg': '您的邮箱有误,请查证。'})
Example #6
0
 def get(self, request):
     email_form = UserChangeEmailForm(request.GET)
     if email_form.is_valid():
         email = email_form.cleaned_data['email']
         users = UserProfile.objects.filter(
             Q(email=email) | Q(username=email))
         if users:
             return JsonResponse({'msg': '该邮箱已存在'})
         print(f'{email=}')
         # 查询该邮箱最近是否获取过验证码
         email_verf_list = EmailVerifyCode.objects.filter(email=email,
                                                          send_type=3)
         if email_verf_list:
             email_verf = email_verf_list.order_by('-add_time')[0]
             if (datetime.now() - email_verf.add_time).seconds < 60:
                 return JsonResponse({'msg': '发送频率过高'})
             # 删除之前的验证码, 重新获取验证码
             email_verf.delete()
         send_email_code(email, 3)
         return JsonResponse({'msg': 'success'})
     return JsonResponse({'msg': 'fail'})
Example #7
0
def user_forget(request):
    '''这是用户忘记密码的视图'''
    if request.method == 'GET':
        #把这个空表单传过去是为了传验证码
        user_forget_form = UserForgetForm()
        return render(request, 'forgetpwd.html',
                      {'user_forget_form': user_forget_form})
    else:
        user_forget_form = UserForgetForm(request.POST)
        if user_forget_form.is_valid():
            email = user_forget_form.cleaned_data['email']
            user_list = UserProfile.objects.filter(username=email)
            #如果用户的邮箱存在
            if user_list:
                send_email_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})
Example #8
0
 def post(self, request):
     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)
         if user_list:
             if send_email_code(email, 2):
                 return HttpResponse('情尽快去邮箱重置密码')
             else:
                 msg = '验证失败'
                 return render(request, 'users/forgetpwd.html', locals())
         else:
             msg = '用户不存在'
             return render(request, 'users/forgetpwd.html', locals())
     else:
         return render(request, 'users/forgetpwd.html', locals())