Django中如何通过render上下文正确渲染商品图片路径?
解决Django模板中静态图片路径解析错误的问题
嘿,别担心,这个问题其实很多刚接触Django的小伙伴都会碰到,咱们一步步来搞定它~
问题根源
你在{% static %}标签里嵌套了{{ product.img }}双大括号变量,这是核心错误。Django模板的解析逻辑是:{% static %}本身就是一个模板标签,它可以直接接收变量作为参数,不需要再用双大括号包裹。当你写成{% static '{{ product.img }}' %}时,Django会把{{ product.img }}当成一个固定的字符串路径,而不是去解析这个变量的值,所以最终路径才会变成转义后的/static/%7B%7B%20product.img%20%7D%7D。
正确写法
把图片那一行的代码改成这样:
<img class="card-img-top" src="{% static product.img %}" alt="{{ product.name }}">
这里直接把product.img变量传给{% static %}标签,Django就会正确解析变量里的图片路径,生成符合预期的静态文件URL啦。
额外配置检查
为了确保静态文件能被正确找到,你可以核对下项目settings.py的配置:
- 确认
STATIC_URL已正确设置(默认是'/static/') - 如果你的图片存放在项目根目录下的
vendor/img/products文件夹,需要把这个目录添加到STATICFILES_DIRS中,示例配置如下:
STATICFILES_DIRS = [ BASE_DIR / "vendor", ]
这样Django的静态文件查找器才能定位到你存放在vendor里的图片资源。
内容的提问来源于stack exchange,提问作者Павел Родин
相关产品推荐
相关产品推荐

