环境:ubuntu22、python虚拟环境
背景描述:
在复现美多商城的图片验证码后端代码时,遇到若干报错,视频:p127-08图片验证码;链接:08-图片验证码_哔哩哔哩_bilibili
问题描述:
在对照项目文档和视频检查时发现,视频中的pillow版本为7.2.0,但是当前环境下的pillow版本为10.4.0,推测为pillow版本问题,但是在重装pillow7.2.0后,问题依旧未解决,后端报错更改为
'TypeError: 'float' object cannot be interpreted as an integer'
前端报错日志:
后端报错日志:
原始代码:
from django_redis import get_redis_connection
from libs.captcha.captcha import captcha
from django.views import View
from django.http import HttpResponse
class ImageCodeView(View):
"""图形验证码"""
def get(self, request, uuid):
"""
:param request: 请求对象
:param uuid: 唯一标识图形验证码所属于的用户
:return: image/jpeg
"""
# 生成图片验证码
text, image = captcha.generate_captcha()
# 保存图片验证码
redis_conn = get_redis_connection('code')
redis_conn.setex('img_%s' % uuid, 300, text)
# 响应图片验证码
return HttpResponse(image, content_type='image/jpeg')
原因分析:pillow版本与captcha.py文件冲突
解决办法:将pillow降级为9.5.0
1.卸载原有pillow
pip uninstall pillow
2.安装pillow 9.5.0
pip install pillow==9.5.0
问题解决:
反思:
1、出现报错先对照视频,不光要对照代码,还要仔细听老师讲的内容。
2、对照完视频还有问题,去后台找报错信息,对着报错信息一点点改,什么时候报错信息更新了,说明有可能找到问题了。
3、debug发现开始钻牛角尖了,尽可能从当前环境抽离,从头梳理内容,没准能有新发型