Django模板代码不执行:商品列表无法显示的问题求助
问题解决办法
你的问题出在变量名不匹配和字段名错误两个地方:
1. 视图与模板的变量名不一致
在views.py的store_home函数中,你把列表数据传入模板时用的键是listing:
context = {'listing': listings}
但模板store_home.html里循环时用的是listings:
{% for listing in listings %}
Django找不到名为listings的上下文变量,所以循环根本不会执行。
修改views.py,把context的键改成listings:
def store_home(request): context = {'listings': listings} # 这里把listing改成listings return render(request, 'store/store_home.html', context)
2. 模板里的字段名错误
你的模拟数据里的商品名称字段是title:
listings = [ { 'seller': 'ABCDEFG', 'title': 'Something to sell', # 字段是title 'date_posted': '28th August 3030' } ]
但模板里用的是listing.item,这个字段不存在,就算循环执行了也显示不出内容。
修改store_home.html,把item改成title:
{% for listing in listings %} <p>{{ listing.title }}</p> <!-- 这里把item改成title --> {% endfor %}
额外验证(可选)
可以在模板里加个判断,确认数据是否正确传入:
<h1>DaftPrices Store Homepage</h1> {% if not listings %} <p>No listings available.</p> {% else %} {% for listing in listings %} <p>{{ listing.title }}</p> {% endfor %} {% endif %}
这样修改后,页面就能正常显示商品列表了。
内容的提问来源于stack exchange,提问作者Purple_Floyd
相关产品推荐
相关产品推荐

