Colin is daily life record

导航

验证码

定义验证码

1.在django项目下创建redis_test.py 与redis建立连接

# 导包
import redis

# 定义ip和端口
host = "localhost"
port = 6379

# 建立链接
r = redis.Redis(host=host,port=port)

# 赋值
r.set('test','test')

# 取值
code = r.get('test')

# 转码
code = code.decode("utf-8")

print(code)

在试图中定义验证码

from myapp.models import User

import redis

#定义ip和端口
host = "localhost"
port = 6379

#建立链接
r = redis.Redis(host=host,port=port)

class MyCode(View):
    # 定义rgb随机颜色
    def get_random_color(self):
        R = random.randrange(255)
        G = random.randrange(255)
        B = random.randrange(255)

        return (R,G,B)

    def get(self,request):
        # 画布
        img_size = (120,50)
        # 定义图片对象
        image = Image.new('RGB',img_size,'white')
        # 定义画笔
        draw = ImageDraw.Draw(image,'RGB')
        source = '0123456789abcdefghijlkmnopqrstuvwsvz'
        # 接收容器
        code_str = ''
        for i in range(4):
            #获取字母颜色
            text_color = self.get_random_color()
            #获取随机下标
            tmp_num = random.randrange(len(source))
            #随机字符串
            random_str = source[tmp_num]
            #装入容器
            code_str += random_str
            #绘制字符串
            draw.text((10+30*i,20),random_str,text_color)
        # 获取缓存区
        buf = io.BytesIO()
        #将临时图片保存到缓冲区
        image.save(buf,'png')
        #保存随机码
        r.set('code',code_str)
        print(r.get('code'))

        return HttpResponse(buf.getvalue(),'image/png')

前端代码

<tr>
    <td>
        验证码:
    </td>
    <td>
        <input type="text" v-model="code" placeholder="请输入验证码" >
        <img :src="src" @click="gitcodeimg" alt="验证码">
    </td>
</tr>

<script>
//导入组件
import myheader from './myheader.vue'

export default {
data () {
    return {
    code:'',
    src: 'http://127.0.0.1:8000/code/',
    }
},

methods:{
    //获取验证码
    gitcodeimg(){
        var codenum = Math.random()
        this.src = 'http://127.0.0.1:8000/code/?code=' + codenum
    }

}

posted on 2024-07-14 13:32  酷酷的瑞瑞  阅读(7)  评论(0编辑  收藏  举报