Django模板中能否正常使用JavaScript模板字符串?
问题原因
- Django 模板的渲染逻辑运行在服务端,JavaScript 代码的执行逻辑运行在客户端浏览器,二者存在明确的先后顺序:服务端完成模板渲染、把生成的静态HTML/JS内容返回给浏览器后,浏览器才会解析执行JS代码。
- 你写的
{{ static() }}是Django模板标签,服务端渲染时会直接把括号内的内容当成普通字符串处理,不会识别其中属于JS语法的${index+1}模板变量,所以会把这段内容原样做URL编码后生成静态路径,自然就得到了带%24%7Bindex%2B1%7D的错误路径。
解决方案
你不能直接在Django的static标签内部插入JS模板变量,只需要把静态资源的固定路径前缀提前通过Django模板渲染暴露给JS,动态拼接的部分交给JS自己处理即可:
// 先通过Django模板渲染出固定的目录路径前缀 const principleIconBasePath = "{{ static('images/Principle_Icon/') }}"; // JS侧自行拼接动态文件名 image.src = `${principleIconBasePath}Principle${index+1}.svg`; console.log(image.src)
内容的提问来源于stack exchange,提问作者E_K
相关产品推荐
相关产品推荐

