zoukankan      html  css  js  c++  java
  • 登陆验证码

    前端Url:

    urlpatterns = [

        path('admin/', admin.site.urls),
    url(r'^login/$',views.login),
    url(r'^get_valid_img.png/',views.get_valid_img)
    ]

    后端调用的方法:
    def get_valid_img(request):
    # with open("valid_code.png", "rb") as f:
    # data = f.read()
    # 自己生成一个图片
    from PIL import Image, ImageDraw, ImageFont
    import random

    # 获取随机颜色的函数
    def get_random_color():
    return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)

    # 生成一个图片对象
    img_obj = Image.new(
    'RGB',
    (150, 35),
    get_random_color()
    )
    # 在生成的图片上写字符
    # 生成一个图片画笔对象
    draw_obj = ImageDraw.Draw(img_obj)
    # 加载字体文件, 得到一个字体对象
    font_obj = ImageFont.truetype("static/font/kumo.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+25*i, 0), tmp, fill=get_random_color(), font=font_obj)

    print("".join(tmp_list))
    print("生成的验证码".center(120, "="))
    # 不能保存到全局变量
    # global VALID_CODE
    # VALID_CODE = "".join(tmp_list)

    # 保存到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())

    # 将生成的图片保存在磁盘上
    # with open("s10.png", "wb") as f:
    # img_obj.save(f, "png")
    # # 把刚才生成的图片返回给页面
    # with open("s10.png", "rb") as f:
    # data = f.read()

    # 不需要在硬盘上保存文件,直接在内存中加载就可以
    from io import BytesIO
    io_obj = BytesIO()
    # 将生成的图片数据保存在io对象中
    img_obj.save(io_obj, "png")
    # 从io对象里面取上一步保存的数据
    data = io_obj.getvalue()
    return HttpResponse(data)#返回给页面

    最后实现的方法:

     页面实现点击刷新验证码功能:

    ·  

      $('.kanbuqing').on('click',function () {
    var new_img = $(this).prev().attr('src')+'?';
    $(this).prev().attr('src',new_img)

    })
    
    
     
  • 相关阅读:
    解决VS2013中的控制台一闪而过的问题
    无法查找或打开 PDB 文件解决办法
    一些课题
    KVM下raw和qcow2格式磁盘文件IO测试
    CentOS6.5下安装jdk配置环境变量错误问题:
    小代码训练
    tomcat启动一闪而过处理
    Tomcat 中get请求中含有中文字符时乱码的处理
    ssm框架错误展示-1
    a标签指定的url,在表单提交前进行js验证的实现
  • 原文地址:https://www.cnblogs.com/maaosheng/p/11574707.html
Copyright © 2011-2022 走看看