Django报错'Stocks' object is not iterable 问题求助
问题修复方案
你代码中存在3个核心错误,按以下步骤修改即可正常渲染数据:
- 修复视图层数据查询逻辑
你当前views.py中传递给模板的是Stocks模型类本身,并非数据库中存储的实际记录,无法被遍历渲染。修改为调用查询方法获取数据集:
# views.py 修复后代码 def stocks_mt(request): # 获取Stocks表中所有存储的记录传递给模板 return render(request, 'azmt.html', {'stock': Stocks.objects.all()})
- 修正模板变量语法错误
home.html中渲染商品名称的位置缺失一个花括号,导致Django模板引擎无法识别为变量:
原错误写法:
<h5 class="card-title text-center">{stocks.name}</h5>
修复后写法:
<h5 class="card-title text-center">{{ stocks.name }}</h5>
- 修正图片字段渲染逻辑
Django的ImageField字段直接输出仅能得到文件相对存储路径,需要调用.url属性才能生成正确的可访问资源地址:
原错误写法:
<img src="{{stocks.image}}" class="card-img-top" alt="...">
修复后写法:
<img src="{{stocks.image.url}}" class="card-img-top" alt="...">
注意:如果尚未配置媒体资源访问规则,需要先在项目
settings.py中添加MEDIA_ROOT、MEDIA_URL配置,同时在根路由文件中添加媒体资源的路由映射,否则图片资源依旧无法正常加载。
内容的提问来源于stack exchange,提问作者Jacopo N
相关产品推荐
相关产品推荐

