Ejemplo n.º 1
0
    def post(self, request):
        # 验证码参数
        hashkey = CaptchaStore.generate_key()
        image_url = captcha_image_url(hashkey)

        reset_form = ResetPasswordForm(request.POST)
        if reset_form.is_valid():
            # 表单
            email = request.POST.get('email', "")
            password = request.POST.get("password", "")
            email_code = request.POST.get("email_code", "")
            # 正则表单验证
            email_msg = check_email(email)
            password_msg = check_password(password)
            email_code_msg = check_email_code(email_code)
            re_msgs = []
            if email_msg:
                re_msgs.append(email_msg)
            if password_msg:
                re_msgs.append(password_msg)
            if email_code_msg:
                re_msgs.append(email_code_msg)
            if len(re_msgs) > 0:
                return render(request, 'users/reset.html', {locals()})
            try:
                # 取出验证邮箱对应的用户对象
                user = UserProfile.objects.get(email=email)
            except Exception as e:
                user = None
            try:
                # 取出验证码对应的验证邮箱对象
                user_veri = EmailVerification.objects.get(
                    Q(code=email_code) & Q(type="modify"))
            except Exception as e:
                user_veri = None

            if user:
                if user_veri:
                    user_veri_status = user_veri.status
                    if user_veri_status == 0:
                        user.password = make_password(password)
                        user.save()
                        user_veri.status = 1
                        user_veri.save()
                        return render(request, 'users/reset_success.html',
                                      locals())
                    elif user_veri_status == 1:
                        msg = '该邮箱验证码已激活'
                        return render(request, 'users/reset.html', locals())
                    else:
                        msg = '未知错误'
                        return render(request, 'users/reset.html', locals())
                else:
                    msg = '邮箱验证码错误'
                    return render(request, 'users/reset.html', locals())
            else:
                msg = '邮箱不存在'
                return render(request, 'users/reset.html', locals())
        else:
            return render(request, 'users/reset.html', locals())
Ejemplo n.º 2
0
def create_captcha(request):
    hashkey = CaptchaStore.generate_key()  # 生成hashkey
    imgage = captcha_image(request, hashkey)
    # 将图片转换为base64
    image_base = base64.b64encode(imgage.content)
    print(hashkey)
    captcha = {'hashkey': hashkey, 'image_url': image_base.decode('utf-8')}
    return captcha
Ejemplo n.º 3
0
    def post(self, request):
        hashkey = CaptchaStore.generate_key()
        image_url = captcha_image_url(hashkey)
        register_form = RegisterForm(request.POST)
        if register_form.is_valid():
            username = request.POST.get("username", "")
            password = request.POST.get("password", "")
            email = request.POST.get('email', "")
            nickname = request.POST.get('nickname', "")
            # 正则表单验证
            username_msg = check_username(username)
            password_msg = check_password(password)
            email_msg = check_email(email)
            re_msgs = []
            if username_msg:
                re_msgs.append(username_msg)
            if password_msg:
                re_msgs.append(password_msg)
            if email_msg:
                re_msgs.append(email_msg)
            if len(re_msgs) > 0:
                return render(request, 'users/register.html', locals())

            # 处理数据库中未激活的用户
            self.delete_inactive_user()

            if UserProfile.objects.filter(username=username):
                msg = "该用户已注册"
                return render(request, 'users/register.html', locals())
            elif UserProfile.objects.filter(email=email):
                msg = "该邮箱已注册"
                return render(request, 'users/register.html', locals())
            elif UserProfile.objects.filter(nickname=nickname):
                msg = "该昵称已存在:)"
                return render(request, 'users/register.html', locals())

            user = UserProfile()
            user.username = username
            # 明文加密
            user.password = make_password(password)
            user.email = email
            user.nickname = nickname
            # 用户状态默认未激活
            user.is_active = False
            user.save()

            # 邮件发送处理
            send_email_code(email, "register")
            # 邮件登录入口
            email_access = email_login_access(email)

            return render(request, "users/activate.html", {
                "email": email,
                "email_access": email_access
            })
        else:
            return render(request, 'users/register.html', locals())
Ejemplo n.º 4
0
 def get(self, request):
     hashkey = CaptchaStore.generate_key()
     try:
         # 获取图片id
         id_ = CaptchaStore.objects.filter(hashkey=hashkey).first().id
         image = captcha_image(request, hashkey)
         # 将图片转换为base64 字节类型的数据,需要解码成字符串
         image_base = base64.b64encode(image.content)
         data = {"id": id_, "image": image_base.decode("utf-8")}
         return Response({"code": 1000, "data": data, "message": None})
     except:
         return Response({"code": 1001, "data": None, "message": "请求失败"})
Ejemplo n.º 5
0
 def list(self, request, *args, **kwargs):
     hashkey = CaptchaStore.generate_key()
     try:
     #获取图片id
         id_ = CaptchaStore.objects.filter(hashkey=hashkey).first().id
         imgage = captcha_image(request, hashkey)
     #将图片转换为base64
         image_base = base64.b64encode(imgage.content)
         json_data = json.dumps({"codeId": id_, "image": "data:image/png;base64,"+image_base.decode('utf-8')})
     except:
         json_data = None
     return HttpResponse(json_data, content_type="application/json")
Ejemplo n.º 6
0
 def get(self, request):
     '''
     获取图片验证码
     :param request:
     :return:
     '''
     hashkey = CaptchaStore.generate_key()
     _id = CaptchaStore.objects.filter(hashkey=hashkey).first().id
     image = captcha_image(request, hashkey)
     # 将图片转换为base64
     image_base = base64.b64encode(image.content)
     data = {"id": _id, "image_base": image_base.decode('utf-8'), "type": "image/png", "encoding": "base64"}
     return ApiResponse(data, code=200, msg='ok', status=status.HTTP_201_CREATED)
Ejemplo n.º 7
0
    def get(self, request, *args, **kwargs):
        #验证码
        if request.GET.get('newsn') == '1':
            # 生成的数字
            csn = CaptchaStore.generate_key()
            #生成的图片路径
            cimageurl = captcha_image_url(csn)

            return HttpResponse(cimageurl)

        response = super(BlogDetailView, self).get(request, *args, **kwargs)
        # 每看一次阅读数数量加一
        self.object.increase_views()

        return response
Ejemplo n.º 8
0
    def get(self, request):
        hashkey = CaptchaStore.generate_key()

        try:
            # 获取id
            id_ = CaptchaStore.objects.filter(hashkey=hashkey).first().id
            image = captcha_image(request,
                                  hashkey)  # captcha_image内部是用get获取,需要加异常

            # base64加密
            image_base = base64.b64encode(image.content)
            # json_data = json.dumps({"id":id_,"image_base64":image_base.decode('utf-8')})
            json_data = {"id": id_, "image_base64": image_base.decode('utf-8')}
        except:
            json_data = None

        return Response(json_data)
Ejemplo n.º 9
0
    def get(self,request):
        #刷新验证码
        if request.GET.get('newsn') == '1':
            # 生成的数字
            csn = CaptchaStore.generate_key()
            #生成的图片路径
            cimageurl = captcha_image_url(csn)

            return HttpResponse(cimageurl)

        # get时展示联系方式

        info=get_object_or_404(Info,isDelete=False)

        form= messageForm()
        return render(request,'contact.html',{'info':info,
                                              'title':'★联系页面',
                                              'form':form})
Ejemplo n.º 10
0
 def get(self, request):
     # 验证码参数
     hashkey = CaptchaStore.generate_key()
     image_url = captcha_image_url(hashkey)
     register_form = RegisterForm()
     return render(request, 'users/register.html', locals())
Ejemplo n.º 11
0
 def get(self, request):
     hashkey = CaptchaStore.generate_key()
     image_url = captcha_image_url(hashkey)
     return render(request, 'users/reset.html', locals())