Django中基于视图变量动态拼接静态图片路径的问题
解决Django静态图片路径动态拼接的问题
这是Django模板开发里很常见的小坑,我来帮你搞定!
你之前的写法失败,核心原因是**{% static %}标签内部不能直接嵌套{{ }}变量**——模板解析的时候会把{{ plot }}当成字符串的一部分,而不是去解析变量值,所以路径自然不对。
给你两种可行的正确写法:
方法1:使用add过滤器直接拼接
这是最简洁的方式,利用Django的add模板过滤器把基础路径和变量拼起来,再传给static标签:
<img src="{% static 'mysite/plots/'|add:plot %}" alt="Stock price vs. predictions graph" style="width: 600px; height: 450px;">
|add会把'mysite/plots/'和plot变量的实际值(比如'AAPL.PNG')拼接成完整的相对路径,static标签再把它转换成正确的静态资源URL。
方法2:用with标签提前拼接路径
如果你的路径逻辑更复杂,或者想提升可读性,可以先用with标签把完整路径组装好,再传入static:
{% with full_plot_path='mysite/plots/'|add:plot %} <img src="{% static full_plot_path %}" alt="Stock price vs. predictions graph" style="width: 600px; height: 450px;"> {% endwith %}
另外要注意确认plot变量的大小写是否和实际文件名一致(比如系统是区分大小写的,'aapl.png'和'AAPL.PNG'是不同的路径),不过你已经确认直接写死路径能显示,所以只要变量值正确就没问题啦。
内容的提问来源于stack exchange,提问作者Mason Choi
相关产品推荐
相关产品推荐

