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

Django模板中在{% static %}内使用{{ article.image }}的语法问题

Django模板中ImageField图片无法正确加载的解决方法

你的问题出在{% static %}标签的用法上——你用引号把模板变量{{ article.image }}包起来了,导致Django把它当成了纯字符串字面量,没有解析变量值,所以才会生成/static/%7B%7B%20article.image%20%7D%7D这种转义后的无效路径。

正确写法

直接把article.image变量传入{% static %}标签,不需要额外的引号或模板变量语法:

<img src="{% static article.image %}" alt="{{ article.alt }}">

完整修正后的代码

另外注意{% load static %}应该放在模板开头,不要在循环里重复加载,优化后的代码如下:

{% load static %}
{% for article in article_roll %}
    <li><div class="blog-post" id="blog{{ forloop.counter }}">
        <img src="{% static article.image %}" alt="{{ article.alt }}">
        <div class="blog-post-preview">
            <span class="blog-title">{{ article.image }} {{ article.title }}</span>
            <span class="blog-date">{{ article.date }}</span>
        </div>
        <span class="blog-text">{{ article.preview }}</span>
    </div></li>
{% endfor %}

原理说明

Django的模板标签和变量解析是分层进行的,当你在{% static %}内部写'{{ article.image }}'时,{% static %}会直接处理这个带引号的字符串,里面的{{ }}不会被触发解析,最终就成了转义后的无效路径。而直接传入变量article.image,{% static %}会正确识别并解析它的值,生成对应的静态资源URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:05:33