Django TemplateSyntaxError:解析'{{'失败,图片展示问题求助
解决Django模板加载产品图片的语法错误
问题分析
你遇到的TemplateSyntaxError是两个原因导致的:
- Django模板语法不允许在
{% static %}标签内部嵌套{{ }}变量标记 - 模板中使用的
{{ path }}变量,和视图传入上下文的键category不匹配
解决方案
1. 修正变量名匹配
视图里你把图片路径赋值给了上下文的category键,所以模板里要对应使用{{ category }};或者修改视图的上下文键为path,保持和模板变量名一致:
# views.py 修改上下文键(二选一即可) slovar = {"product": product, "path": path}
2. 修正static标签语法
直接在{% static %}标签中使用变量名,不需要嵌套{{ }}:
<!-- 若用视图原上下文键category --> <img src="{% static category %}" alt="product picture" width="540" height="300"> <!-- 若修改视图上下文键为path --> <!-- <img src="{% static path %}" alt="product picture" width="540" height="300"> -->
3. 验证图片路径正确性
确保path_to_foto字段存储的是相对于static目录的路径:比如图片实际存放在static/media/xxx.jpg,则path_to_foto的值应为media/xxx.jpg,不要加static/前缀({% static %}标签会自动拼接STATIC_URL前缀,默认是/static/)。
修正后的完整模板代码
{% extends 'products.html' %} {% load static%} {% block title %}Продукт{% endblock %} {% block page_content %} {% if product %} <p>Путь до фото: {{ category }} </p> <img src="{% static category %}" alt="product picture" width="540" height="300"> <p><b>Категоия: </b>{{ product.category }} </p> <p><b>Название: </b>{{ product.name }}</p> <p><b>Марка: </b>{{ product.marka }}</p> <p><b>Привод: </b>{{ product.privod }}</p> <p><b>Лошадиные силы: </b>{{ product.loshad_sila }}</p> <p><b>Коробка передач: </b>{{ product.box_peredach }}</p> <p><b>Объём двигателя: </b>{{ product.volume_dvigatel }}</p> <p><b>Цена: Бесплатно</b></p> <button>КУПИТЬ</button> {% endif %} {% endblock %}
内容的提问来源于stack exchange,提问作者Глеб Гудалин
相关产品推荐
相关产品推荐

