Django为何在错误目录查找模板?多应用项目模板路径异常
我之前也碰到过类似的情况,大概率是模板引用路径或者文件存放位置的问题,给你几个具体的排查和解决步骤:
检查视图中的模板调用格式:
其他应用能正常找到模板,应该是它们的视图里都用了「应用名/模板文件名」的格式来引用,比如render(request, 'other_app/xxx.html')。你看看double_ch_control_app的视图代码,是不是直接写了render(request, 'double_channel_control.html')?如果是,改成render(request, 'double_ch_control_app/double_channel_control.html'),Django就会自动去标准的应用子目录里查找模板了。确认模板文件的实际存放位置:
先核对下模板文件的位置:是不是不小心把double_channel_control.html放在了double_ch_control_app/templates/根目录,而不是double_ch_control_app/templates/double_ch_control_app/下?如果是放错了位置,要么把文件移到应用子目录里,要么保持当前位置但确保视图里的引用路径和文件位置对应上。验证项目的模板配置:
打开项目的settings.py,检查TEMPLATES配置项,确保APP_DIRS设置为True——这是让Django自动遍历每个已安装应用templates目录的关键。另外,确认double_ch_control_app已经正确添加到INSTALLED_APPS列表里,没有拼写错误。清理模板缓存(可选):
如果上面的步骤都试过还是有问题,试试清理Django的模板缓存。开发环境下直接重启服务器就行,生产环境可以运行python manage.py clearcache命令,避免缓存导致的路径识别异常。
内容的提问来源于stack exchange,提问作者Jephtah Jephtah

