使用Django ListView后模板无法找到的问题求助
排查Django ListView模板找不到的问题
以下是几个常见的原因和解决方法:
模板路径错误
你写的template_name = 'templates/bag_list.html'多了templates/前缀。Django会自动从INSTALLED_APPS中各app的templates目录,以及settings.py里TEMPLATES['DIRS']指定的目录去查找模板,不需要在路径里加templates。
修正示例:- 如果模板放在项目根目录的
templates文件夹下:class BagsListView(generic.ListView): model = Bag template_name = 'bag_list.html' - 如果模板放在对应app的
templates/[app名称]/下(比如app叫bags,路径是bags/templates/bags/bag_list.html):class BagsListView(generic.ListView): model = Bag template_name = 'bags/bag_list.html'
- 如果模板放在项目根目录的
未在INSTALLED_APPS中添加对应app
检查settings.py里的INSTALLED_APPS列表,确保包含Bag模型所在的app(比如app名为bags,就添加'bags')。Django不会自动扫描未注册的app的模板目录。模板文件名/目录名拼写错误
核对模板文件名是否为bag_list.html(注意单数bag,不是bags),目录名的拼写、大小写是否和代码中的一致。Linux/macOS系统下路径区分大小写,这点要注意。TEMPLATES配置中的DIRS未正确设置
如果你的模板放在项目根目录的templates文件夹下,需要确保settings.py的TEMPLATES配置里包含该路径:TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], # 确保这一行存在 'APP_DIRS': True, 'OPTIONS': { # ...其他配置 }, }, ]查看Django的调试信息
开启DEBUG = True后,Django的错误页面会显示它尝试查找的所有模板路径。你可以根据这些路径,把模板放到正确的位置,或者修正template_name的值。
内容的提问来源于stack exchange,提问作者Chamran
相关产品推荐
相关产品推荐

