Django模板字符串替换失败:无法将城市变量渲染到静态资源路径
解决Django模板中静态文件路径变量替换问题
你遇到的问题核心在于Django模板标签内部无法嵌套使用{{ }}变量语法——当你在{% static %}标签里写{{city}}时,模板引擎会把它当成普通字符串处理,最终被URL转义成了%7B%7Bcity%7D%7D,自然无法正确替换成城市名称。
正确的解决方法:用模板过滤器拼接路径
你可以借助Django的add过滤器,把静态文件的基础路径、城市变量和后缀名拼接起来,再传给static标签:
{% for city in cities %} <div style="background-image: url({% static 'app/img/'|add:city|add:'.jpg' %});"> {% endfor %}
另一种更直观的可选方案
如果觉得过滤器拼接的写法不够清晰,也可以先通过with标签定义完整的图片路径变量,再传入static标签:
{% for city in cities %} {% with img_path='app/img/'|add:city|add:'.jpg' %} <div style="background-image: url({% static img_path %});"> {% endwith %} {% endfor %}
这两种写法都会让模板引擎正确解析city变量,最终生成你预期的/static/app/img/London.jpg这类正确路径。
内容的提问来源于stack exchange,提问作者ElisaFo
相关产品推荐
相关产品推荐

