环境 django 1.10.6
缘起
今天接到一个任务——解决终端满屏日志中的无用错误。 django 会尽可能给你准确报出错误位置,但是一些复杂,深层次的错误它自带的错误日志有些不足了,日志多但是却无效。
过程
对于后台日志太多而无用,我则直接转到浏览器查看控制台访问情况,得到如下提示
直接去后台匹配这个错误:undefined。根据这个错误完全定位不到具体哪儿出了问题。我调试跟踪发现进入到一个特定的页面会一定出现这个问题,而如果换一个页面则不出现错误。 得此,我进而对这个页面进行跟踪,我尝试替换页面的做法,最终定位到一段 html 代码就会引起该错误:
<img src="/static/msite/image/qrcode_for_gh.jpg">
我很诧异一个img标签会引起后端访问一个错误的地址,但是却完全不知道原因。 我尝试替换这个img的src,结果依然还是相同错误。
在用firebug调试下发现问题,上图:
根据调用堆栈的提示,去追寻相关js如下图
最终才知道这个图片地址被惰性加载了,然后在惰性加载后,img的src变成 undefined引发后端访问一个不存在的地址。
解决
在使用前,处理一下 src 值
function imageLoaded(obj, src) { var img = new Image(); if(src===undefined){ src=''; } img.onload = function() { obj.src = src; }; img.src = src; }
本文django使用图片延时加载引起后台404错误到此结束。生活中,我们没有必要为难自己,质疑自己,有时,我们无法很好地理解或学会某样事物,那只是我们思考与接收问题的角度不同罢了。每个人都有自己的泪要擦,每个人都有自己的路要走,只要记得:冷了,给自己加件外衣;饿了,给自己买个面包;痛了,给自己一份坚强;失败了,给自己一个目标;跌倒了,在伤痛中爬起,给自己一个宽容的微笑继续往前走,已足够!小编再次感谢大家对我们的支持!