我有一个现有的Django项目,工作正常。我根据原来的一个(不是复制,只使用结构)制作了一个新的,我遇到了新的问题。
在新项目的应用程序中,我有一个文件夹模板,并在另一个带有应用程序名称的文件夹中。但如果我将模板引用为“app / index.html”,则无法加载模板。在视图中。
我的TEMPLATE_DIRS
设置为os.path.join(BASE_DIR, 'templates')
,就像第一个项目一样。目录结构是相同的。但是当我收到调试消息时,我发现它正在尝试从ROOT/templates/app/index.html
而不是ROOT/app/templates/app/index.html
加载模板。
我最终发现工作的原因是,仅TEMPLATE_DIRS
到BASE_DIR
,然后将模板的完整路径引用为'app/templates/app/index.html'
。但这很乏味,显然不正确。
在我使用TEMPLATE_LOADERS
的两个应用中,它都是默认值。我还能检查什么?
我在Python 2.7上使用Django 1.6.1。
答案 0 :(得分:1)
查看您的TEMPLATE_DIRS,我希望它看到/full/path/to/base_dir/templates
下,而不是/full/path/to/base_dir/app/templates
如果后者是您想要的,请使用
os.path.join(BASE_DIR', 'app', 'templates')
答案 1 :(得分:0)
在我们的应用程序中将模板文件夹命名为错误时,通常会发生这种错误。检查它是否正确命名为“templates”。 django.template.loaders.app_directories.Loader 在我们的app文件夹中查找名为 templates 的文件夹
即
true
另外,请确保您已在INSTALLED_APPS中正确定义了应用名称'app_name.apps.App_nameConfig':
app/
templates/
app/
index.html