构建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
相关产品推荐
相关产品推荐

