zoukankan      html  css  js  c++  java
  • Django实现验证码

    简单搞定生成验证码:

    1.views.py

    from io import BytesIO
    import random
    from PIL import Image,ImageDraw,ImageFont
    from utils.check_code import create_validate_code
    
    def checkCode(request):
        return render(request,'code_test.html')
    
    def codetest(request):
        # # 获取随机颜色的函数
        # def get_random_color():
        #     return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)
        #
        # # 生成一个图片对象
        # img_obj = Image.new(
        #     'RGB',
        #     (220, 35),
        #     get_random_color()
        # )
        # # 在生成的图片上写字符
        # # 生成一个图片画笔对象
        # draw_obj = ImageDraw.Draw(img_obj)
        # # 加载字体文件, 得到一个字体对象
        # font_obj = ImageFont.truetype('arial.ttf', 28)
        # # 开始生成随机字符串并且写到图片上
        # tmp_list = []
        # for i in range(5):
        #     u = chr(random.randint(65, 90))  # 生成大写字母
        #     l = chr(random.randint(97, 122))  # 生成小写字母
        #     n = str(random.randint(0, 9))  # 生成数字,注意要转换成字符串类型
        #
        #     tmp = random.choice([u, l, n])
        #     tmp_list.append(tmp)
        #     draw_obj.text((20 + 40 * i, 0), tmp, fill=get_random_color(), font=font_obj)
        #
        # # 保存到session
        # request.session["valid_code"] = "".join(tmp_list)
        # # 加干扰线
        # width = 220  # 图片宽度(防止越界)
        # height = 35
        # for i in range(5):
        #     x1 = random.randint(0, width)
        #     x2 = random.randint(0, width)
        #     y1 = random.randint(0, height)
        #     y2 = random.randint(0, height)
        #     draw_obj.line((x1, y1, x2, y2), fill=get_random_color())
        #
        # # 加干扰点
        # for i in range(40):
        #     draw_obj.point((random.randint(0, width), random.randint(0, height)), fill=get_random_color())
        #     x = random.randint(0, width)
        #     y = random.randint(0, height)
        #     draw_obj.arc((x, y, x + 4, y + 4), 0, 90, fill=get_random_color())
        #
        # # 不需要在硬盘上保存文件,直接在内存中加载就可以
        # io_obj = BytesIO()
        # # 将生成的图片数据保存在io对象中
        # img_obj.save(io_obj, "png")
        # # 从io对象里面取上一步保存的数据
        # data = io_obj.getvalue()
        # return HttpResponse(data)
    View Code

    2.url

    urlpatterns = [
        path('admin/', admin.site.urls),
        url('^checkcode.html$',views.checkCode),
        url('^codetest.html',views.codetest),
    ]
    View Code

    3.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>验证码测试</title>
    </head>
    <body>
        <p><input type="text" placeholder="用户名"></p>
        <p><input type="text" placeholder="密码"></p>
        <p><input type="text" placeholder="验证码">
            <img src="/static/img/20181207212735.png" alt="">
            <img src="/codetest.html" alt="">
        </p>
    </body>
    </html>
    View Code
  • 相关阅读:
    ExtJS专题(十):layout布局的使用(3)
    ExtJS专题(十一):lTree的Treepanel使用
    ExtJS专题(四):ExtJS组件的属性
    ExtJS专题(七):ExtJS面板Panel中视图区ViewPort的使用
    ExtJS专题(二):ExtJS类库和组件介绍
    ExtJS专题(十):layout布局的使用(1)
    EXtJS专题(九):ExtJS对话框的使用
    ExtJS专题(五):ExtJS面板Panel的使用
    ExtJS专题(三):ExtJS组件的使用
    ExtJS专题(八):ExtJS窗口Window的使用
  • 原文地址:https://www.cnblogs.com/ray-h/p/10229094.html
Copyright © 2011-2022 走看看