随机验证码生成 与 生成随机字母和数字,缓存存随机验证码

生成随机背景颜色

import random
def random_num(min_num, max_num):
    num = random.randint(min_num, max_num)
    num1 = random.randint(min_num, max_num)
    num2 = random.randint(min_num, max_num)
    return (num,num1,num2)

生成六位数随机大小写字母和数字

方法一:
import random
def six_code():
    letter = ''
    for i in range(6):
        letter_lower = chr(random.randint(65, 90))   # 随机长生一个大写字母
        letter_capital = chr(random.randint(97, 122))  # 随机产生一个小写字母
        num = str(random.randrange(10))  # 随机产生一个数字
        random_lett = letter_lower + letter_capital + num  # 随机产生大小写字母与数字
        letter += random.choice(random_lett)  # 从大小写字母与数字中随机选一个
    return letter
方法二:
import
random,string def get_rangdom_letter():   src = string.ascii_letters + string.digits   random_num = random.sample(src,5)   n = ''   for i in random_num:     n += i   return n

随机六位数验证码生成

from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
def login_code(request):
    img = Image.new('RGB',(303, 33),color=random_num(150,250))  # 生成画板
    img_draw = ImageDraw.Draw(img)  # 在哪块画板上画
    img_font = ImageFont.truetype( font="static/font/kumo.ttf", size=30 )  # 设置字形
    six_num_code = six_code()  # 产生了一个六位数的随机字符
    request.session["img_code"] = six_num_code
    for i,v in enumerate(six_num_code):
        img_draw.text((55+i*33, 0), v, random_num(0,130), font=img_font)  # 在画板上写字
    bf = BytesIO()  # 生成缓存
    img.save(bf, "png")  # 将画板保存在缓存里
    data = bf.getvalue()  # 从缓存里取出来
    return HttpResponse(data)

 

from blog import models

from PIL import Image,ImageDraw,ImageFont
from io import BytesIO

import random,string


# 随机颜色
def get_random_color():
    return (
        random.randint(0,100),
        random.randint(0, 100),
        random.randint(0, 100),
    )

# 字体随机颜色
def get_random_font():
    return (
        random.randint(200,255),
        random.randint(200, 255),
        random.randint(200, 255),
    )

# 随机字母数字结合
def get_rangdom_letter():
    src = string.ascii_letters + string.digits
    random_num = random.sample(src,5)
    n = ''
    for i in random_num:
        n += i
    return n

# 取随机字母数字结合图
def get_valid_code(request):
    # 生成一个随机背景颜色图片
    img = Image.new('RGB',(120,35),color=get_random_color())
    # 拿到画笔,画背景颜色
    img_draw = ImageDraw.Draw(img)
    # 字体设置
    font = ImageFont.truetype('static/font/ss.TTF',size=25)
    # 为背景颜色添加字体    随机字母数字
    img_draw.text((20,0), get_rangdom_letter() ,get_random_font(),font=font)

    f = BytesIO()
    img.save(f,'png') # 图片放入内存中

    data = f.getvalue()
    return HttpResponse(data)









from django.contrib import auth


# 登录认证

def login(request):
    if request.method == 'GET':
        return render(request,'login.html')
    elif request.method == 'POST':
        name = request.POST.get('name')
        pwd  = request.POST.get('pwd')
        # models.UserInfo.objects.create_superuser(username=name, password=pwd,blog_id=1,email='127@qq.com')

        print(name,pwd)
        user = auth.authenticate(request,username=name,password=pwd)
        print(user)
        if user:
            print(111111111)
            auth.login(request,user)
            return JsonResponse('登陆成功')
        else:
            return redirect('/login/')
eg

 

posted @ 2018-11-27 23:13  星牧  阅读(418)  评论(0编辑  收藏  举报