You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django的template文件夹下创建多级子目录并正常渲染模板

问题原因

  • 你当前配置的模板查找路径DIRS指向项目根目录下的templates文件夹,但你实际的模板文件都存放在myapp应用目录下的templates子目录中
  • Linux系统下目录名大小写敏感,需要确认代码中写的路径和实际目录名大小写完全匹配

解决方法

两种方案二选一即可:

方案1:保留模板放在应用目录下(推荐,符合Django可插拔设计)

你已经开启了APP_DIRS: True配置,且myapp已经加入INSTALLED_APPS列表,只需要确认两点:

  1. 实际目录名称和代码中调用的路径大小写完全一致:比如你代码里写的是myapp/Layouts/layout1.html,就要确保myapp/templates/myapp/下的目录名确实是Layouts(首字母大写),如果是小写的layouts就会触发找不到模板的报错
  2. 修改目录结构后重启Django服务,新的目录结构才会被识别

方案2:模板统一放在项目根目录管理

如果你希望所有应用的模板集中存放:

  1. 在项目根目录(和myapp、内层MyProject文件夹同级的目录)新建templates文件夹
  2. 把原来myapp/templates/目录下的myapp文件夹整个挪到根目录刚新建的templates文件夹里
  3. 重启Django服务即可,你原有的DIRS配置已经指向根目录的templates文件夹,不需要额外修改配置

排查小技巧

如果修改后还是报错,可以在视图中加入打印代码,查看Django实际扫描的模板路径,快速定位问题:

from django.template.loaders.app_directories import get_app_template_dirs
from django.conf import settings

def index(request):
    # 控制台输出所有模板查找路径
    print("全局模板路径:", settings.TEMPLATES[0]['DIRS'])
    print("应用模板路径:", list(get_app_template_dirs('templates')))
    return render(request,'myapp/Layouts/layout1.html')

内容的提问来源于stack exchange,提问作者anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:39:03