array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 随机验证码 - 爱码网

一、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登录验证


 

 

     

 

 

 

 

 

 

        

相关文章: