Django开发报错:'Movies' object is not iterable 求助
解决Django中'Movies' object is not iterable错误
你的报错核心原因是在视图里把模型类本身传给了模板,而非查询到的电影实例集合。
看你的views.py代码:
def index(request): movie = Movies.objects.all() return render(request, 'movies/index.html', {'movies': Movies})
这里Movies.objects.all()获取到的是可迭代的QuerySet(电影列表),但你返回上下文时传的是Movies——也就是模型类本身,模板里的{% for movie in movies %}自然无法迭代一个类对象。
修正后的views.py代码
from django.shortcuts import render from .models import Movies def index(request): # 把变量名改成movies更贴合语义,同时把查询结果传给模板 movies = Movies.objects.all() return render(request, 'movies/index.html', {'movies': movies})
额外建议
Django模型类的命名规范是用单数形式(比如Movie而非Movies),这样Django自动生成的数据库表名会是movies,刚好匹配你的上下文变量名,也能解决你提到的对象显示为'moviess'的问题。修改模型类名后记得迁移数据库:
python manage.py makemigrations python manage.py migrate
内容的提问来源于stack exchange,提问作者Sesshōmaru
相关产品推荐
相关产品推荐

