随机验证码

一、Python生成随机验证码,需要使用PIL模块.

  1、安装PIL模块

    pip3 install pillow

、基本使用方式

  1、创建图片

    1、引入模板

      from PIL import Image

    2、创建图片对象 

      img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))

      注释:mode指的是颜色搭配,size指的是图片大小(长,宽),color指的是红,绿,蓝三颜色

    3、保存图片对象

      f=open('index1.png','wb')  ;img.save(f,format='png')  ;f.close()

      注释:format指的是保存的格式,也可以这样写img.save(f,'png')

  2、创建画笔,用于在图片上画任何内容

    1、引入模板

      from PIL import ImageDraw

    2、创建图片对象 

      img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))

    3、创建画笔

      draw = ImageDraw.Draw(img, mode='RGB')

    4、画点

      draw.point([100, 100], fill="red")

      draw.point([300, 300], fill=(255, 255, 255))

      注释: 第一个参数表示坐标位置(向右,向下)且从左上角开始计算第二个参数表示颜色即可直接写颜色名称也可写三基色,

    5、画线

      draw.line((100,100,100,300), fill='red')

      draw.line((100,100,300,100), fill=(255, 255, 255))
      注释:第一个参数前两个值表示起始坐标位置而后两个值表示结束坐标位置,固定两点成一条线(也是从左上角开始计算),第二个参数表示颜色
    6、画圆
       draw.arc((100,100,300,300),0,90,fill="red")
       注释:第一个参数前两个值表示起始坐标位置而后两个值表示结束坐标位置,固定两点成一条线,然后对其垂直形成一个矩形圆要画在矩形中间,并且从三刻钟的位置顺时针开始画起,第二个参数表示开始角度;第三个参数表示结束角度;第四个参数:表示颜色(也可以写RGB颜色)
    7、写文本
       draw.text([0,0],'python',"red")
       注释:第一个参数表示从起始坐标开始写字;第二个参数表示写入内容;第三个参数表示颜色(也可以写RGB颜色)
    8、特殊字体的应用
      1、引入相应的字体模板(需要在ttf网站中下载自己想要的字体)
        from PIL import ImageFont
      2、产生一个字体类型对象
        font = ImageFont.truetype("kumo.ttf", 28)
        注释:第一个参数表示字体文件路径;第二个参数表示字体大小
      2、draw.text([0, 0], 'python', "red", font=font)
        注释: 第一个参数表示起始坐标;第二个参数表示写入内容;第三个参数表示字体颜色(也可以写RGB颜色);第四个参数表示指定的字体样式对
三、制作图片验证码
  1、生成随机字母
    1、导入相应模块
       import random
    2、生成随机数字并转换成ASCII对应的字母
      1、obj=chr(random.randint(65, 90))
      注释:random.randint的方法是生成随机数而后面的(65, 90)表示随机数的范围,(65, 90)在ascll表中对应的是英文大写字母,(97,122)在ascll表中对应的是英文小写字母,而chr()是将数字转换成ascii表中对应的值。
      2、随机生成5个字符串
        方式1:传统方式循环生成
                
          方式2:列表生成式          
            
   3、随机生成有颜色的验证码   
            
    4、在服务器端保存验证码(可以将验证码保存在session中,用户下次登录先验证验证码是否正确再判断用户名和密码)   
           
    5、客户端局部刷新验证码
      
      

      注释:通过查找到图片提交路径并且给其后面添加"?"的方式就可以已ajax的形式默默的重新访问src的url从而达到刷新效果

    6、全局变量(将django中的局部变量设置成为全局变量,从而使得其他函数都能调用该全局变量)

      1、首先在setting中定义一个变量

         

        注释:变量名必须是FUNCTION并且是大写,而变量值可以自己随意定义

      2、在TEMPLATES中添加一条记录,该记录的作用就相当于运行项目就能就会执行该记录,blog.views指代的是路径,fun_class指代的是函数名,

意思就是说只要运行项目就会执行该代码,该代码就成了全局变量,就能被所有函数所调用

      

    7、ajax登录验证


     

        
原文地址:https://www.cnblogs.com/xuanan/p/7481819.html