1、使用Pillow库生成一个图片验证码
def get_code(request):
mode = 'RGB'
size = (200, 100)
red=random.randrange(256)
green=random.randrange(256)
blue = random.randrange(256)
bg_color = (red, green, blue)
image = Image.new(mode=mode, size=size, color=bg_color)
imagedraw = ImageDraw(image, mode=mode)
imagefont=ImageFont.truetype(settings.FONT_PATH,50)
verify_code=genarate_code()
request.session['verify_code']=verify_code
for i in range(4):
fill_color=(random.randrange(256),random.randrange(256),random.randrange(256))
imagedraw.text(xy=(50*i, 0), text=verify_code[i],font=imagefont,fill=fill_color)
for i in range(500):
fill_color=(random.randrange(256),random.randrange(256),random.randrange(256))
xy=(random.randrange(201),random.randrange(101))
imagedraw.point(xy=xy,fill=fill_color)
fp = BytesIO()
image.save(fp, 'png')
return HttpResponse(fp.getvalue(),content_type='image/png')
随机生成一个验证码函数
def genarate_code():
source="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
code=''
for i in range(4):
code+=random.choice(source)
return code
前端html文件
注意下面的 login.js 需要 load static
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
{
<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/1.11.1/jquery.js"></script>
<script type="text/javascript" src="{% static 'js/login.js' %}"></script>
</head>
<body>
<form action="{% url 'app:login' %} }" method="post">
<span>用户名:</span><input type="text" name="username" placeholder="请输入用户名">
<br>
<span>验证码:</span><input type="text" name="verify_code" placeholder="请输入验证码">
<br>
<img src="{% url 'app:get_code' %}" alt="点击换一张">
<button>提交</button>
</form>
</body>
</html>
静态 login.js的 设置
需要注意 我们要随机生成一个路径, 让程序认为路径变化,从而让function执行 新路径。
$(function (){
$("img").click(function (){
console.log("点到了");
// 此处$(this).attr("src","/app/getcode/") 如果路径是一样的,起不到刷新的作用,需要随机生成一个路径让function 生效
$(this).attr("src","/app/getcode/?t="+Math.random());
})
})
|