You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django图片加载触发无限循环及404 NotFound问题求助

解决Django模板中图片加载失败导致的无限循环问题

问题分析

你遇到的无限循环问题,根源在于图片加载失败时的onerror事件被反复触发。从日志可以看到,浏览器一直在请求lawyer_0.png和lawyer_1.png但都返回404,这说明两个核心问题:

  • 模板里onerror指定的默认图片路径/文件名和实际文件不匹配(模板里写的是test_{{ test.gender }}.png,但日志里实际请求的是lawyer_xx.png)
  • 当默认图加载失败时,浏览器会再次触发onerror事件,形成无限请求循环。

解决方案

我们需要两步来彻底修复这个问题:

  1. 修正默认图片的路径/文件名
    把onerror里的图片路径改成和日志中请求一致的正确路径(比如应该是lawyer_{{ test.gender }}.png而不是test_...),同时确保这些默认图片确实存在于你的静态文件目录中(比如/static/images/template/下要有lawyer_0.png和lawyer_1.png)。

  2. 添加onerror防护,避免无限循环
    在onerror事件里先设置this.onerror=null;,这样当默认图也加载失败时,不会再次触发onerror事件,直接终止循环。

修改后的Django模板代码

{% for test in test_profile %}
<tr>
    <td>
        {% if test.path != '' %}
        <img style='width:70px;' 
             src="{% static '/uploads' %}{{ test.path }}/pic_{{ test.name }}" 
             onerror="this.onerror=null; this.src='/images/template/lawyer_{{ test.gender }}.png';">
        {% endif %}
    </td>
    <td>{{ test.l_idx }}</td>
    <td>{{ test.l_name }}</td>
    <td style="padding-left:10px;">{{ test.sub_name }}</td>
</tr>
{% endfor %}

额外优化建议

  • 推荐使用Django的static模板标签来加载默认图片,路径更规范且不易出错,比如:
    src="{% static 'images/template/lawyer_'|add:test.gender|add:'.png' %}"
    
  • 部署前务必检查默认图片是否存在,运行python manage.py collectstatic确保静态文件正确收集到生产环境目录。

内容的提问来源于stack exchange,提问作者tigerJK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:32:41