zoukankan      html  css  js  c++  java
  • django--验证码功能实现

    首先建立验证码的视图函数
    1需要安装pillow库

    #导入绘图库
    from PIL import ImageDraw
    #导入绘图字体库
    from PIL import ImageFont
    #导入图片库
    from PIL import Image
    #导入io库
    import io
    #导入随机库
    import random

    1,定义验证码图片

    #定义随机颜色方法
    def get_random_color():
        
        R = random.randrange(255)
        G = random.randrange(255)
        B = random.randrange(255)
    
        return (R,G,B)
    
    #定义随机验证码
    def test_captcha(request):
        #定义背景颜色
        bg_color = get_random_color()
        #定义画布大小 宽,高
        img_size = (150,80)
        #定义画笔 颜色种类,画布,背景颜色
        image = Image.new("RGB",img_size,bg_color)
        #定义画笔对象 图片对象,颜色类型
        draw = ImageDraw.Draw(image,'RGB')
        #定义随机字符
        source = '0123456789asdfghjkl'
        #定义四个字符
        #定义好容器,用来接收随机字符串
        code_str = ''
        for i in range(4):
            #获取随机颜色 字体颜色
            text_color = get_random_color()
            #获取随机字符串
            tmp_num = random.randrange(len(source))
            #获取字符集
            random_str = source[tmp_num]
            #将随机生成的字符串添加到容器中
            code_str += random_str
            #将字符画到画布上 坐标,字符串,字符串颜色,字体
            #导入系统真实字体,字号
            my_font = ImageFont.truetype("c:\windows\Fonts\arial.ttf",20)
            draw.text((10+30*i,20),random_str,text_color,font=my_font)
        #使用io获取一个缓存区
        buf = io.BytesIO()
        #将图片保存到缓存区
        image.save(buf,'png')
    
        #将随机码存储到session中
        request.session['code'] = code_str
    
        #第二个参数声明头部信息
        return HttpResponse(buf.getvalue(),'image/png')

    2前端定义验证码图片和输入输入验证码

    {# 利用clcik时间来刷新验证码 #}{# 通过样式来改变悬停时的图标 #}
            <img style="cursor:pointer;" src="/captcha" onclick='this.src=this.src+"?"+Math.random()'  />  
            <input name='code' type="text" />

    3.定义验证码路由,并在登录时根据前端name 获取用户输入的验证码与存入session的验证码比对实现其功能

  • 相关阅读:
    ArcGIS安装中模块不能注册问题的解决办法
    BW一些关于DTP的一些链接
    HR一个奖金模拟试算的程序,仅供参考
    SD关于SD的业务的锁定的几个tCODE
    ABAP如何在abap中使用日志管理
    HR一个员工的所有主数据(PA*)克隆到一个新员工的程序代码
    LSMW--一个中文介绍的摘抄
    MM物料重新过账的代码摘抄
    ABAP如何创建和使用sap的号码范围对象
    BDC Program to Upload Material Master Data (MM01)
  • 原文地址:https://www.cnblogs.com/xcsg/p/10455785.html
Copyright © 2011-2022 走看看