Django ListView模板不存在报错:自定义模板未生效问题求助
问题原因与解决办法
Django的ListView有默认的模板查找逻辑:它会自动去 <app名称>/<模型小写名称>_list.html 路径找模板。你的模型是Portfolio,所以默认会找portfolio/portfolio_list.html,但你创建的是content_list.html,这就是模板找不到的直接原因。
给你两种解决方式:
方式一:调整模板文件名
直接把content_list.html重命名为portfolio_list.html,并放在templates/portfolio/目录下(确认你的app名称是portfolio,且模板目录结构符合Django的查找规则)。
方式二:在ListView中指定模板路径
如果不想改文件名,就在你的ListView类里显式设置template_name属性,指定使用你已创建的模板:
from django.views.generic import ListView from .models import Portfolio class PortfolioListView(ListView): model = Portfolio # 根据你的实际路径填写,比如模板在templates根目录就写'content_list.html',在app子目录就写'your_app/content_list.html' template_name = 'content_list.html' # 可选:如果想自定义上下文里的变量名,比如把默认的object_list改成portfolios,可以加这行 # context_object_name = 'portfolios'
另外提下数据库数据未加载的可能点:
- 确认已经执行过
python manage.py makemigrations和python manage.py migrate,把Portfolio模型同步到PostgreSQL - 检查数据库里是否真的有
Portfolio的数据记录 - 确认ListView没有添加额外的过滤条件(比如
queryset属性)导致无数据返回
内容的提问来源于stack exchange,提问作者David138
相关产品推荐
相关产品推荐

