django使用图片延时加载引起后台404错误


Posted in Python onApril 18, 2017

环境 django 1.10.6

缘起

今天接到一个任务——解决终端满屏日志中的无用错误。 django 会尽可能给你准确报出错误位置,但是一些复杂,深层次的错误它自带的错误日志有些不足了,日志多但是却无效。

过程

对于后台日志太多而无用,我则直接转到浏览器查看控制台访问情况,得到如下提示

django使用图片延时加载引起后台404错误

直接去后台匹配这个错误:undefined。根据这个错误完全定位不到具体哪儿出了问题。我调试跟踪发现进入到一个特定的页面会一定出现这个问题,而如果换一个页面则不出现错误。 得此,我进而对这个页面进行跟踪,我尝试替换页面的做法,最终定位到一段 html 代码就会引起该错误:

<img src="/static/msite/image/qrcode_for_gh.jpg">

我很诧异一个img标签会引起后端访问一个错误的地址,但是却完全不知道原因。 我尝试替换这个img的src,结果依然还是相同错误。

在用firebug调试下发现问题,上图:

django使用图片延时加载引起后台404错误

根据调用堆栈的提示,去追寻相关js如下图

django使用图片延时加载引起后台404错误

最终才知道这个图片地址被惰性加载了,然后在惰性加载后,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;
}
Python 相关文章推荐
Python实现截屏的函数
Jul 25 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
一百多行python代码实现抢票助手
Sep 25 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
python Gabor滤波器讲解
Oct 26 Python
如何用 Python 制作一个迷宫游戏
Feb 25 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 Python
使用Python3制作TCP端口扫描器
Apr 17 #Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 #Python
Python的时间模块datetime详解
Apr 17 #Python
Python中标准模块importlib详解
Apr 16 #Python
Python 实现随机数详解及实例代码
Apr 15 #Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 #Python
Python生成随机数组的方法小结
Apr 15 #Python
You might like
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
python 随机数生成的代码的详细分析
2011/05/15 Python
简单使用Python自动生成文章
2014/12/25 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
医务人员医德考评自我评价
2015/03/03 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
如何在Python中创建二叉树
2021/03/30 Python
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL