def get(self, request, uuid): text, image = captcha.generate_captcha() redis_conn = get_redis_connection('verify_code') redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) return http.HttpResponse(image, content_type='image/jpg')
def get(self, request): # 接收参数 cur_uuid = request.GET.get('cur') pre_uuid = request.GET.get('pre') # 校验参数 if not cur_uuid: return http.HttpResponseForbidden('参数不全') # 检验参数格式 if not re.match(r'^\w{8}(-\w{4}){3}-\w{12}', cur_uuid): return http.HttpResponseForbidden('参数格式不正确') if pre_uuid and not re.match(r'^\w{8}(-\w{4}){3}-\w{12}', pre_uuid): return http.HttpResponseForbidden('参数格式不正确') # 生成验证码 text, image = captcha.generate_captcha() logger.info('图形验证码是:%s' % text) # 将验证码保存到redis数据库中 redis_conn = get_redis_connection('verify_code') try: # 删除之前的 redis_conn.delete('ImageCode_' + pre_uuid) # 保存当前的 redis_conn.setex('ImageCode_' + cur_uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) except Exception as e: logger.error(e) return http.HttpResponseServerError('生成图形验证码失败') else: return http.HttpResponse(image, content_type='image/jpg')
def get(self, request): # 1、接收参数 cur_uuid = request.GET.get("cur") pre_uuid = request.GET.get("pre") # 2、校验参数 if not cur_uuid: return http.HttpResponseForbidden("参数不全") # if not re.match(r"\w{8}(-\w{4}){3}-\w{12}", cur_uuid): return http.HttpResponseForbidden("参数格式不正确") if pre_uuid and not re.match(r"\w{8}(-\w{4}){3}-\w{12}", pre_uuid): return http.HttpResponseForbidden("参数格式不正确") # 3、生成验证码 text, image = captcha.generate_captcha() logger.info("图片验证码是:%s" % text) # 4、将验证码保存到reids数据库 redis_conn = get_redis_connection("verify_code") try: # 删除之前的 redis_conn.delete('ImageCode_' + pre_uuid) # 保存当前的 redis_conn.setex('ImageCode_' + cur_uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) except Exception as e: logger.error(e) return http.HttpResponseServerError("生成图片验证码失败") else: return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """獲取圖形驗證碼""" # 生成圖形驗證碼 text, image = captcha.generate_captcha() # 保存圖形驗證碼 conn = get_redis_connection('verify_code') conn.setex('img_%s' % uuid, constants.IMAGE_CODE_EXPIRES, text) # 返回響應 return HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ :param uuid: 通用唯一识别码,用于唯一标识该图形验证码属于哪个用户的 :return: image/jpg """ text, image = captcha.generate_captcha() redis_conn = get_redis_connection('verify_code') redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ 返回图形验证码图片,并在redis中保存验证码 :params uuid:唯一标识,当前验证码所属用户 :return image/jpg """ text, image = captcha.generate_captcha() # 连接settings中配置的redis,用来保存图形验证码 redis_conn = get_redis_connection('verify_code') redis_conn.setex("img_%s" % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) return HttpResponse(image, content_type="image/jpg")
def get(self, request, uuid): """ :param uuid: 通用唯一标识码 :return: image/jpg """ # 生成图形验证码 text, image = captcha.generate_captcha() # 保持图形验证码 redis_conn = get_redis_connection('verify_code') redis_conn.setex('img_%s' % uuid, 300, text) # 响应图形验证码 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): # 接收参数 # 调用captcha工具生成图形码和文字 text, image = captcha.generate_captcha() # 链接redis,获取链接对象 redis_conn = get_redis_connection('verify_code') # 利用链接对象保存数据到redis,用setex,因为set不能设置有效时间 redis_conn.setex('img_%s' % uuid, 300, text) # 返回结果 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): ''' :param uuid: :return: 图形验证码 ''' # 生成图形验证码 text, image = captcha.generate_captcha() # 连接redis数据库 redis_connections = get_redis_connection("verifications") # 保存图形验证码到数据库 redis_connections.setex("image_%s" % uuid, 300, text) # 返回响应 # content_type 为返回的类型是什么 return HttpResponse(image, content_type="image/jpg")
def get(self, request, uuid): ''' :param request: 请求对象 :param uuid: 唯一标识图形验证码所属的用户 :return: 图形验证码 ''' # 实现主体业务逻辑: 生成,保存, 响应图形验证码 # 生成图形验证码 text, image = captcha.generate_captcha() print(text) # 保存图形验证码 redis_conn = get_redis_connection('verify_code') redis_conn.setex('img_%s' % uuid, 300, text) # 响应图形验证码 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ :param request: 请求对象 :param uuid: 唯一标识图形验证码所属于的用户 :return: image/jpg """ # 生成图片验证码 text, image = captcha.generate_captcha() # 保存图片验证码 redis_conn = get_redis_connection('verify_code') redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 响应图片验证码 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): # parm 通用唯一识别码,用于标识是哪个用户的 # 接收参数 校验参数 # 实现主体业务逻辑:生成、保存、响应图像验证码 # 生成 text, image = captcha.generate_captcha() # 保存 redis_conn = get_redis_connection('verify_code') # redis_conn.setex('key','expires','value') redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 响应结果 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ :param uuid: 通用唯一识别码,用于唯一标识该图形验证码属于哪个用户的 :return: image/jpg """ # 接收和校验参数 # 实现主体业务逻辑: (生成、保存、响应图形验证码) # 1)生成图形验证码 text, image = captcha.generate_captcha() # 2)保存图形验证码 redis_conn = get_redis_connection("verify_code") redis_conn.setex("img_%s" % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 3)响应图形验证码 # 响应结果 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ :param request: 请求对象 :param uuid: 唯一标识图形验证码所属于的用户 :return: image/jpg """ # 接受校验参数 text, image = captcha.generate_captcha() # 实现主题业务逻辑,生成,保存,响应图形验证码 redis_conn = get_redis_connection('verify_code') # 设置过期时间 # redis.conn.setex(key值, 时间以秒为单位, value值)可以设置过期时间 redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 响应图形验证码 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): ''' :param request: :param uuid: 通用唯一识别码,用于唯一表示该图形验证吗属于哪个用户 :return: image/jpg ''' # 接收和校验参数 # 实现主体业务逻辑: 生成,保存,响应图形验证码 # 生成图形验证码 text, image = captcha.generate_captcha() # 保存图形验证码 redis_conn = get_redis_connection('verify_code') redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 响应图形验证码 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): # 1、提取参数 # 2、校验参数 # 3、业务数据处理——使用captcha生成图片验证码,写入redis、响应图片数据 # 3.1、调用captcha生成图片和验证码 text, image = captcha.generate_captcha() print("验证码:", text) # 3.2、把验证码写入redis # 约定格式:{ img_<uuid> : text } # get_redis_connection: 根据django的配置获取一个redis的链接对象 conn = get_redis_connection('verify_code') conn.setex('img_%s' % uuid, 300, text) # 4、构建响应 return HttpResponse( image, # 图片数据,作为响应体数据 content_type='image/jpeg')
def get(self, request, uuid): """ :param request: 请求对象 :param uuid: 唯一标识图形验证码属于用户 :return: image/jpg """ # 生成图片验证码 name唯一标识 text是校验码的文字,image是2进制图片 name, text, image = captcha.generate_captcha() # 保存图片验证码, "verify_code"在setting中设定 redis_conn = get_redis_connection("verify_code") # 第2个参数是有效时间 redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 响应图片验证码 return HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ :param request: :param uuid: 通用唯一识别码,用于唯一表示该图形验证码属于哪个用户的 :return: """ # 接受和校验参数 # 实现主体业务逻辑:生成图形验证码,保存,响应图形验证码 # 生成图形验证码 text, image = captcha.generate_captcha() # 保存图片验证码 redis_conn = get_redis_connection('verify_code') # 找到dev中配置的redis库 # 设置键为uuid,值为text,超时时间为300秒 redis_conn.setex("img_%s" % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # setex可以设置生存时间 # 响应图片验证码 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ :param uuid: 通用唯一识别码,用于唯一标识该图形验证码属于哪个用户的 :return: image/jpg """ # 实现主体业务逻辑:生成,保存,响应图形验证码 # 生成图形验证码 text, image = captcha.generate_captcha() # 保存图形验证码 redis_conn = get_redis_connection('verify_code') # redis_conn.setex('key', 'expires', 'value') redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 响应图形验证码 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ :parms uuid: 通用唯一识别码,用于唯一标识该图形验证码属于哪个用户的 :return: image/jpg """ # 接收和校验参数(uuid) # 主体业务逻辑 # 1. 生成图形验证码(captcha) text, image = captcha.generate_captcha() # 2. 保存图形验证码(redis) redis_conn = get_redis_connection('verify_code') redis_conn.setex("img_%s" % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 响应结果(图形验证码) return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ :param request: 请求对象 :param uuid: 通用唯一识别码,用于唯一标识该图形验证码属于哪个用户的 :return: 数据类型 image/jpg """ # 1.生成图片验证码 text, image = captcha.generate_captcha() # 2. 保存图片验证码 # 获取redis连接对象 redis_conn = get_redis_connection('verify_code') # 使用redis_conn.setex('key' 'expires', 'value') redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE__REDIS_EXPIRES, text) # 3 响应图片验证码 return http.HttpResponse(image, content_type='image/jpg')
def get(self, request, uuid): """ :param request: :param uuid: 通用唯一识别符 :return: 验证码图片 """ # 生成验证码 和 图形验证码 text, image = captcha.generate_captcha() # print(text, image) # 保存验证码 redis redis_conn = get_redis_connection('verify_code') # setex(self, name, time, value): redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 响应图形验证码 return http.HttpResponse(image, content_type='image/png')
def get(self, request, uuid): """ :param request: 请求对象 :param uuid: 唯一标识图形验证码所属于的用户 :return: image/jpg """ # 生成图形验证码(图片、文字) text, image = captcha.generate_captcha() # 保存图形验证码(文字) redis_conn = get_redis_connection('verify_code') # redis_conn.set() 没有过期时间 # redis_conn.setex('key', '过期时间', 'values') redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) # 响应结果(图片) # return http.HttpResponse(响应体, content_type='数据类型') return http.HttpResponse(image, content_type='image/jpeg')
def get(self, request, uuid): """ :param request: 请求对象 :param uuid:唯一标识图形验证码所属与的用户 :return: image/jpg """ # 接受参数 # 提取参数 # 校验参数 # 生成图形验证码 text, image = captcha.generate_captcha() # 保存图形验证码,文字保存在redis redis_conn = get_redis_connection('verify_code') redis_conn.setex('img_%s' % uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) logger.info('图形验证码:%s' % text) # 响应图形验证(图片) # HttpResponse(content=响应体, 表示返回的内容, content_type=响应体数据类型, status=状态码) return http.HttpResponse(image, content_type='image/jpg')
def get(self, request): """ 实现图形验证码逻辑 :param uuid cur, pre :return image.jpg """ # 1.获取参数 cur = request.GET.get('cur') pre = request.GET.get('pre') # 2. 参数校验 TODO # 3. 业务逻辑处理 # 生成图形验证码 text, image = captcha.generate_captcha() # 保存图形验证码 # 使用配置的redis数据库别名,创建连接到redis的对象 redis_conn = get_redis_connection('verify_code') # 使用连接到redis的对象去操作数据存储到redis # 图形验证码必须要有有效期 redis_conn.setex('img_%s'%cur, 300, text) # 响应图形验证码 return HttpResponse(image, content_type='image/jpg')
def get(self, request): """ 获取图片验证码 :param request: :return: """ # 1、获取参数 cur_uuid = request.GET.get("cur", "") pre_uuid = request.GET.get("pre", "") # 2、校验参数 if not cur_uuid: return http.HttpResponseForbidden("参数不全") if not re.match(r"\w{8}(-\w{4}){3}-\w{12}", cur_uuid): return http.HttpResponseForbidden("参数格式不正确") if pre_uuid and not re.match(r"\w{8}(-\w{4}){3}-\w{12}", pre_uuid): return http.HttpResponseForbidden("参数格式不正确") # 3、生成验证码 text, image = captcha.generate_captcha() logger.info("图片验证码是:%s" % text) # 4、将生成的验证码保存在redis中 redis_conn = get_redis_connection("verify_code") try: # 删除原来的 redis_conn.delete("ImageCode_" + pre_uuid) # 保存当前的 redis_conn.setex("ImageCode_" + cur_uuid, constants.IMAGE_CODE_REDIS_EXPIRES, text) except Exception as e: logger.error(e) return http.HttpResponseServerError("生成图片验证码错误") else: return http.HttpResponse(image, content_type="image/jpg")
def get(self, request, image): text, img = captcha.generate_captcha() redis_db = get_redis_connection("identified") redis_db.setex("img_%s" % image, 400, text) return http.HttpResponse(img, content_type="image/jpg")