0

我是 django 的新手,通过做小应用程序来学习。在views.py 中,我故意包含了一个不存在的模板文件(.html)。

t = get_template('current_datetimeP.html')

在setting.py TEMPLATE_DIRS = ("D:/Django_Code/mysite/templates/", )

我在 /time/收到此错误TemplateDoesNotExist

Django 尝试按以下顺序加载这些模板:Using loader django.template.loaders.filesystem.Loader: D:\Django_Code\mysite\templates\current_datetimeP.html(文件不存在)

因为我在 settings.py 中包含了 D:\Django_Code\mysite\templates\ ,所以 Django 在那里很好,但是接下来呢

我也得到这个

使用加载器 django.template.loaders.app_directories.Loader: C:\Python27\lib\site-packages\django\contrib\auth\templates\current_datetimeP.html(文件不存在)

为什么Django 在这里查看 * C:\Python27\lib\site-packages\django\contrib\auth\templates*。它是搜索模板的默认位置吗?

还有一件事,很明显 Django 正在查看上面的目录。我们可以将模板文件放在那里而不是放在应用程序目录中吗?(虽然这不是一个好习惯)?

4

2 回答 2

2

模板加载由 settings.py 中的 TEMPLATE_LOADERS 设置控制,通常看起来像这样:

TEMPLATE_LOADERS = (
    'django.template.loaders.app_directories.Loader',
    'django.template.loaders.filesystem.Loader',
)

应用程序目录加载器在设置中 INSTALLED_APPS 中列出的任何应用程序的“模板”文件夹中查找模板。

文件系统加载器尝试从设置文件中 TEMPLATE_DIRS 下列出的完全限定目录路径名加载模板。

如果您希望提供文件系统加载器首选项,请将其放在 TEMPLATE_LOADERS 设置中的应用程序目录加载器之前。如果您想关闭应用程序目录加载,请使用 # 将其注释掉(或将其从元组中删除)。

于 2012-10-11T10:31:13.393 回答
0

尝试使用使用 settings.py 位置创建的模板路径

import os
DIRNAME = os.path.dirname(__file__)
TEMPLATE_DIRS = (
    os.path.join(DIRNAME, "templates"),
)


TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
)
于 2012-10-11T10:49:35.320 回答