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

构建Django电商平台时模板报错:期望标识符/有效属性名如何修复?

Django模板语法报错修复方案

错误原因

你遇到的模板语法报错,是因为Django模板解析器不支持直接使用Python字典的get("key")带参数的调用写法,模板会把括号、引号和空格识别为无效的属性名组成部分,从而触发"Expected an identifier"类的错误。另外你的循环存在变量名冲突问题:{% for product in product %}里循环变量和迭代器同名,会导致遍历逻辑异常。

修复步骤

  • 替换字典访问语法:将所有product.get("xxx")的写法替换为Django模板支持的字典访问方式,可选两种:
    • 点语法:product.image(适用于键名符合标识符规则的情况)
    • 索引语法:product["image"](通用写法,支持所有键名)
  • 修正循环变量名:把循环变量product改成和迭代器不同的名称,比如item,避免变量覆盖。

修正后的完整代码

{% for item in product %}
<div class="col-xs-3 col-sm-3 col-md-3">
    <div class="card" style="width: 18rem;">
        <img src='/media/{{ item.image }}' class="card-img-top" alt="...">
        <div class="card-body">
            <h5 class="card-title">{{ item.product_name }}</h5>
            <p class="card-text">{{ item.desc }}</p>
            <button id="pr{{item.id}}" class="btn btn-primary cart">Add To Cart</button>
        </div>
    </div>
</div>
{% endfor %}

如果你的product是QuerySet(Django模型实例集合),上述点语法依然适用,直接访问模型字段即可,比如item.image会自动调用字段的__str__方法或获取文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:52:33