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 排列组合之itertools
Mar 20 Python
Python随机生成带特殊字符的密码
Mar 02 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
Python Matplotlib库安装与基本作图示例
Jan 09 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
python项目对接钉钉SDK的实现
Jul 15 Python
在Python函数中输入任意数量参数的实例
Jul 16 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
通过实例了解python property属性
Nov 01 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
Matplotlib绘制混淆矩阵的实现
May 27 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
2013/03/01 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
使用JavaScript破解web
2018/09/28 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
Python最基本的输入输出详解
2015/04/25 Python
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
书法社团活动总结
2015/05/07 职场文书
入党群众意见范文
2015/06/02 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
MySQL 四种连接和多表查询详解
2021/07/16 MySQL
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript