博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7月2日 Django 生成验证码、
阅读量:5085 次
发布时间:2019-06-13

本文共 1795 字,大约阅读时间需要 5 分钟。

html页面里

{
# 验证码 #}

 js里

{
#当图片的src改变时,浏览器会自动访问该地址,所以此处点击验证码图片,触发事件改变src地址内容,用以改变验证码图片#}$('#v_code').click(function () { if (this.src == '/get_v_code/') { this.src += '?'; } else { this.src = '/get_v_code/'; }});

views.py文件里

# 因为页面控制每次点击图片在连接后加? 或减去?,url一直都是这两个,Django会自动将这两个url的执行加入缓存,所以每次会获得一样的验证图片# 该语法糖 告诉系统不要对该方法进行缓存操作@never_cachedef get_v_code(request):    from PIL import Image, ImageDraw, ImageFont    import random    # 定义生成一个随机颜色代码的内部函数    def get_color():        return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)    # 生成一个图片对象    img_obj = Image.new(        'RGB',  # 图片格式        (166, 37),  # 图片大小        color=get_color()    )    # 在图片中加文字    # 生成一个画笔对象    draw_obj = ImageDraw.Draw(img_obj)    # 加载字体文件    font_obj = ImageFont.truetype('static/font/kumo.ttf', size=28)    # 循环5次,每次往图片上写入一个随机字符    tmp_list = []    for i in range(5):        n = str(random.randint(0, 9))        l = chr(random.randint(97, 122))        u = chr(random.randint(65, 90))        r = random.choice([n, l, u])        tmp_list.append(r)        draw_obj.text(            (i * 30 + 10, 0),  # 位置            r,  # 内容            get_color(),  # 颜色            font=font_obj,        )    # 得到随机验证码    v_code = ''.join(tmp_list)    request.session['v_code'] = v_code.upper()    # 第一种,将图片保存到文件(硬盘),然后再返回到页面    # with open('vv.png', 'wb')as f:    #     img_obj.save(f, 'png')    # with open('vv.png', 'rb')as f:    #     return HttpResponse(f.read(), content_type='imge/png')    # 第二种,直接将图片放在内存中,返回回去    from io import BytesIO    tmp = BytesIO()  # 生成一个IO对象    img_obj.save(tmp, 'png')    data = tmp.getvalue()    return HttpResponse(data, content_type='imge/png')

 

转载于:https://www.cnblogs.com/95lyj/p/9265825.html

你可能感兴趣的文章
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
一天一道算法题--5.30---递归
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
php变量什么情况下加大括号{}
查看>>
linux程序设计---序
查看>>
【字符串入门专题1】hdu3613 【一个悲伤的exkmp】
查看>>
C# Linq获取两个List或数组的差集交集
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
PHP count down
查看>>