Diango实现图形验证码


基本思路

使用PIL库动态创建验证码图片,用FileReponse将验证码图片返回客户端用session对象保存验证码,用于判断输入验证码是否正确。


`

一、使用步骤

1.引入库(视图函数中)

在这里插入图片描述
PIL没有需要自己安装,编译器会提示。

2.定义函数获取随机字符

代码如下(示例):

def getRandomChar():
    num = str(randint(0, 9))
    lower = chr(randint(97, 122))
    upper = chr(randint(65, 90))
    char = choice([num, lower, upper])
    return char

3.定义试图函数创建图形验证码图片

def createImg(request):
    img = Image.new(mode="RGB", size=(160, 30), color=(100, 100, 100))
    draw = ImageDraw.Draw(img)
    font = ImageFont.truetype(font="arial.ttf", size=24)
    code = ''
    for i in range(5):
        c = getRandomChar()
        draw.text((10 + 30 * i, 2), text=c, fill=(255, 255, 255), font=font)
        code += c
    request.session['random-code'] = code
    f = open("test.png", 'wb')
    img.save(f, format="png")
    f.close()
    return FileResponse(open("test.png", 'rb'))

4.定义试图函数使用图形验证码

def imgCheckCode(request):
    form = '<p>验证码的实现</p>' \
           '<form name="input" action="/docheck" method="post">' \
           + '<a href="/getcheck"><img src="/getpng"></a>单击图片刷新<br>' \
           + '请输入图中的校验码:<input type= "text" name = "code" maxlength=5 size=8>' \
           + '<input type="submit" value="提交"><form>'
    return HttpResponse(form)

5.定义试图函数验证图形验证码

def verifyCode(request):
    out = "验证码不正确!"
    if request.POST['code'].upper() == request.session['random-code'].upper():
        out = "验证码正确!"
    return HttpResponse(out)

6.URL访问配置

urlpatterns = [
    path('getpng',views.createImg),
    path('getcheck/', views.imgCheckCode),
    path('docheck', csrf_exempt(views.verifyCode))
]

通过python manage.py runserver命令启动,进入127.0.0.1:8000/getcheck/

效果展示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值