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爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
Python 异常处理实例详解
Mar 12 Python
python的类方法和静态方法
Dec 13 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
Python的time模块中的常用方法整理
Jun 18 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
Python闭包思想与用法浅析
Dec 27 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
如何用python插入独创性声明
Mar 31 Python
pytorch 实现在测试的时候启用dropout
May 27 Python
Python List remove()实例用法详解
Aug 02 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 文章中的远程图片采集到本地的代码
2009/07/30 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
javascript学习网址备忘
2007/05/29 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
python写日志文件操作类与应用示例
2019/07/01 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
如何使用python写截屏小工具
2020/09/29 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
建筑总经理岗位职责
2014/02/02 职场文书
毕业生工作求职信
2014/06/30 职场文书
信用卡工资证明格式
2014/09/13 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书