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

如何转义Django模板标签{% %},让JS模板字面量${变量}正常解析?

问题解决方法

你的问题核心是Django模板引擎会优先解析{% ... %}标签,导致JavaScript模板字符串里的${fname}被Django当成静态文件路径的一部分处理,无法被JS正常解析。以下是两种可行的解决方式:

方式一:使用Django的verbatim标签包裹代码块

用{% verbatim %}和{% endverbatim %}包裹包含Django模板标签的JS代码段,这样Django会跳过解析这段内容,直接原样输出给JavaScript,JS就能正常处理模板字符串变量了。

修改后的代码:

var fname = 'pic.jpg';

{% verbatim %}
`<div class='col-md-2 mb-2 posr'>
     <input type='checkbox' class='custom-control-input chk pos-ab'>
     <img src="{% static '${fname}' %}" class='img-thumbnail'>
 </div>`
{% endverbatim %}

方式二:手动转义Django模板标签分隔符

将{%替换为{{ "{%" }},%}替换为{{ "%}" }},让Django渲染时输出原始的{%和%}字符,而不是解析标签。

修改后的代码:

var fname = 'pic.jpg';

`<div class='col-md-2 mb-2 posr'>
     <input type='checkbox' class='custom-control-input chk pos-ab'>
     <img src="{{ "{%" }} static '${fname}' {{ "%}" }}" class='img-thumbnail'>
 </div>`

两种方式都能让Django不解析{% static %}标签,同时保留JavaScript模板字符串的变量替换功能,最终JS执行后会生成正确的图片地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:20:30