博客系统-验证码相关
前端相关
<img class="validCode_img" src="/get_validCode_img/" alt="" width="160px" height="40px" title="点击更换验证码"> 前端src访问这个url会自动生成图片链接
验证码刷新
//url无刷新验证码
$(".validCode_img").click(function () {
this.src+="?";
});
url配置
url(r'^get_validCode_img/',views.get_validCode_img),
后端代码具体实现
# 生成验证码函数 def get_validCode_img(request): print("===================caonidaye,登陆页面执行") from io import BytesIO import random from PIL import Image,ImageDraw,ImageFont img = Image.new(mode="RGB", size=(120, 40),color=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))) #背景 draw = ImageDraw.Draw(img,mode="RGB") #生成一个画笔,可以写东西 draw.point([100, 20], fill="black") #画点-----(坐标,参数) draw.line((5,20,90,30),fill="black") #画线-----(开始坐标,结束坐标;颜色参数) draw.line((10,20,50,30),fill="black") draw.arc((60,0,68,8),0,90,fill="red") #画圆------(xxxxxxxxx) draw.arc((0,0,80,40),0,90,fill="red") font = ImageFont.truetype("blog/static/font/kumo.ttf",25) # draw.text([20,10],"python","purple",font=font) #写文本 ----(坐标,文本,颜色,字体) valid_list = [] for i in range(5): '''文本信息''' random_num = str(random.randint(0,9)) random_lower_char = chr(random.randint(65,90)) random_upper_char = chr(random.randint(97,122)) random_char = random.choice([random_num,random_lower_char,random_upper_char]) draw.text([5+i*24,10],random_char,(random.randint(0,255),random.randint(0,255),random.randint(0,255)),font=font) valid_list.append(random_char) #写一次添加一次 f = BytesIO() img.save(f,"png") #刷到内存 data = f.getvalue() #从内存取值 ########################################################################3 valid_str = "".join(valid_list) #将列吧拼接成字符串 print(valid_str) request.session["keepValidCode"]=valid_str #存到session中 return HttpResponse(data)
本文来自博客园,作者:一石数字欠我15w!!!,转载请注明原文链接:https://www.cnblogs.com/52-qq/p/8669241.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)