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

Django模板中JS循环结合{% static %}生成动态图片路径的方法

解决Django模板中JS动态修改静态图片路径的问题

核心原因

Django的{% static %}模板标签是服务器端渲染的,会在页面发送到浏览器前完成解析;而JS是客户端执行的,运行时模板标签已经无法再被解析。所以直接在JS代码里拼接{% static %}标签的写法完全无效。

可行解决方案

方案1:获取静态资源基础URL后拼接

先在模板中通过Django标签获取静态资源的根路径,再在JS里动态拼接图片文件名:

  1. 在模板的<script>标签中先渲染静态资源前缀:
<script>
// 由Django服务器解析生成静态资源的基础URL
const staticBaseUrl = "{% get_static_prefix %}";
</script>
  1. 修改JS逻辑,拼接完整图片路径:
let errorCount = 0;

if (matched) {
    errorCount++;
    // 拼接完整路径:基础URL + 图片相对路径
    const picturePath = `${staticBaseUrl}hangman_game/img/s${errorCount}.jpg`;
    document.getElementById("gallows").innerHTML = `<img src="${picturePath}" alt="" />`;
}

方案2:提前渲染图片前缀路径

如果只针对这一组图片,也可以直接渲染图片的固定前缀部分,再拼接序号:

  1. 在模板中渲染图片前缀:
<script>
// 由Django解析生成图片的固定前缀路径
const imagePrefix = "{% static 'hangman_game/img/s' %}";
</script>
  1. JS中拼接完整路径:
let errorCount = 0;

if (matched) {
    errorCount++;
    const picturePath = `${imagePrefix}${errorCount}.jpg`;
    document.getElementById("gallows").innerHTML = `<img src="${picturePath}" alt="" />`;
}

注意事项

  • 确保已经在模板顶部加载了static标签库:{% load static %}
  • {% get_static_prefix %}需要提前加载static库才能使用,和{% static %}属于同一套标签

内容的提问来源于stack exchange,提问作者Paweł Pedryc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:30:58