• 用户登录验证码生成


    用户登录验证码生成

     
    一、视图代码
    import random
    
    
    def get_random_color():
        """
        获取随机图片颜色
        :return: 
        """
        return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)
    
    
    def valid_img(request):
        # 方式一
        # with open("111.png", "rb") as f:
        #     data = f.read()
    
        # 方式二
        # from PIL import Image
        # img = Image.new("RGB", (250, 40), get_random_color())
        # f = open("validcode.png", "wb")
        # img.save(f, "png")
        # with open("validcode.png", "rb") as f:
        #     data = f.read()
    
        # 方式三
        # from io import BytesIO
        # img = Image.new("RGB", (250, 40), get_random_color())
        # f=BytesIO()
        # img.save(f, "png")
        # data = f.getvalue()
    
        # 方式四
        from io import BytesIO
        from PIL import Image, ImageDraw, ImageFont
        img = Image.new("RGB", (250, 40), get_random_color())  # 新建图片大小为250*40
        draw = ImageDraw.Draw(img)  # 可以在该图片对象上写内容
        font = ImageFont.truetype("statics/font/KaushanScript-Regular.ttf", 30)  # 指定字体,需自行下载字体文件
    
        keep_str = ""
        for i in range(5):  # 获取随机数
            random_num = str(random.randint(0, 9))
            random_low_alpha = chr(random.randint(97, 122))
            random_upper_alpha = chr(random.randint(65, 90))
            random_char = random.choice([random_num, random_low_alpha, random_upper_alpha])
            draw.text((20 + i * 35, 0), random_char, get_random_color(), font=font)
            keep_str += random_char
    
        # 噪点噪线
        # width=250
        # height=40
        # for i in range(10):
        #     x1=random.randint(0,width)
        #     x2=random.randint(0,width)
        #     y1=random.randint(0,height)
        #     y2=random.randint(0,height)
        #     draw.line((x1,y1,x2,y2),fill=get_random_color())
        #
        # for i in range(100):
        #     draw.point([random.randint(0, width), random.randint(0, height)], fill=get_random_color())
        #     x = random.randint(0, width)
        #     y = random.randint(0, height)
        #     draw.arc((x, y, x + 4, y + 4), 0, 90, fill=get_random_color())
        request.session["keep_str"] = keep_str
        f = BytesIO()
        img.save(f, "png")
        data = f.getvalue()
    
        return HttpResponse(data)
    二、模板文件代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.css">
        <style>
            .con{
                margin-top: 120px;
            }
        </style>
    </head>
    <body>
    
    <div class="container">
        <div class="row con">
            <form action="/login/" method="post">
                {% csrf_token %}
                <div class="form-group col-sm-6 col-sm-offset-3">
                    <label for="exampleInputEmail1">用户名</label>
                    <input type="text" class="form-control" id="exampleInputEmail1" placeholder="用户名">
                </div>
                <div class="form-group col-sm-6 col-sm-offset-3">
                    <label for="exampleInputPassword1">密码</label>
                    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="密码">
                </div>
                <div class="form-group col-sm-6 col-sm-offset-3">
                    <label for="exampleInputFile">验证码</label>
                    <div class="row">
                        <div class="col-sm-6">
                            <input type="text" id="exampleInputFile" class="form-control col-sm-3">
                        </div>
                        <div class="col-sm-4">
    {#                        <img src="/static/images/111.png" alt="">#}
                            <img src="/valid_img/" alt="">
                        </div>
                    </div>
                </div>
                <div class="form-group col-sm-6 col-sm-offset-3">
                    <button type="submit" class="btn btn-defaultcol-sm-offset-3">登录</button>
                </div>
    
            </form>
    
        </div>
    </div>
    
    </body>
    </html>
  • 相关阅读:
    牛客网每日一练
    牛客网每日一练
    linux/nginx 安全增强 迎客
    ObjectiveC 对象复制 迎客
    在Xcode中搭建真机调试环境 迎客
    VirtualBox虚拟机Ubuntu找不到网卡的解决方法 迎客
    Xcode中创建和添加Libary 迎客
    做领导还是做自己? 迎客
    ObjcetiveC 归档 迎客
    ObjcetiveC 中 @property 介绍 迎客
  • 原文地址:https://www.cnblogs.com/zbj666/p/13219406.html
Copyright © 2020-2023  润新知