界面设计网站推荐百度seo网站优化服务
在众多编程语言中,python语言足够快捷高效。今天,我们使用python语言,结合django框架,实现系统登录页面中的图形验证码。
一、图形验证码实现算法
我们新建一个imagecode.py文件,实现代码如下:
from PIL import Image, ImageDraw, ImageFont
import randomdef random_char():return chr(random.randint(65, 90))def random_color():return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))def image_code():width = 80height = 26image = Image.new('RGB', (width, height), color=(226,226, 240))draw = ImageDraw.Draw(image)font = ImageFont.truetype('arial.ttf', 20)chars = ''for i in range(4):char = random_char()chars += chardraw.text((20*i+2, 3), char, fill=random_color(), font=font)return image, chars
二、登录页面实现
我们login.html中,进行图片的引用代码:
<label class="block clearfix"><span class="block input-icon input-icon-right"><label><img style="height:22px;" id="codeImg" alt="点击更换" title="点击更换" src="/captcha/"/></label><input type="text" class="text" name="code" id="code" placeholder="验证码"/><i class="ace-icon fa fa-lock"></i></span>
</label>
并给图片实现点击更换验证码的请求代码:
function changeCode() {$("#codeImg").attr("src", "/captcha/?tm=" + genTimestamp());}jQuery(function ($) {/**加载页面时获取验证码**/$(document).ready(function() {$("#codeImg").bind("click", changeCode);});});
三、视图层逻辑处理
我们新增一个loginctrl.py文件,获取验证码图片,并存储验证码到session中:
from django.http import HttpResponse
from ..common.imagecode import image_codedef login_code_ctrl(request):img, chars = image_code()request.session['captcha'] = charsresponse = HttpResponse(content_type='image/png')img.save(response, 'PNG')return response
我们把我们的视图处理加入到urls.py中:
urlpatterns = [path("", login.login),path("captcha/", loginctrl.login_code_ctrl, name='captcha'),
]
四,页面测试
启动服务,我们打开本地浏览器,输入地址:http://localhost:8000,页面打开正常,验证码显示正常。