基本逻辑:
1.前端请求图形验证码(image_codes/(?P<uuid>[\w-]+)/)
(一般用于获取短信验证码)
2.进入视图,接收请求提取参数并进行参数校验
3.生成图形验证码
4.保存图形验证码(redis,uuid)
5.响应图形验证码
准备:
1.创建子应用:verifications
2.libs包里添加captha(captcha框架依赖于Pillow,需安装处理图片的库Pillow)
3.准备redis存储验证码的相关数据:
"verify_code": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/NUM",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
生成验证码:
class ImageCodeView(View):
def get(self,request,uuid):
#生成图形验证码
text,image = captcha.generate_captcha()
#保存图形验证码
redis_conn =get_redis_connection('verify_code')
#num:图形验证码的有效时间,如300,意为有效时长为300秒
redis_conn.setex('img_%s' % uuid,num,text)
return http.HttpResponse(image,content_type='image/jps')