Django教程 - 在/ polls /上的TemplateDoesNotExist

时间:2010-10-27 20:08:45

标签: python django

我试图让它工作一百万次。我已经独自放了一个星期然后回来了。我用谷歌搜索并阅读了与此有关的每篇文章。在没有找到答案的情况下,我让不安全的傻瓜在消息组中贬低。我只想让它发挥作用。当我在Django教程的第三部分中进行操作时,我将进入为索引页面创建模板的部分,当我在浏览器中进行检查时,它会出现TemplateDoesNotExist at /polls/。我检查了文件所有权,将其全部移动,始终更改TEMPLATES_DIR中的setting.py。我已将文件的内容传递给cat以确保其正常工作。为了让这个工作起来,我为奇怪的上帝牺牲了动物。我现在转向你。我确信这是最愚蠢的事情,我对此毫无疑问。我只是想让它发挥作用。

我不确定你想要/需要的代码/回溯的哪些部分,让我知道我会发布它们。我在Ubuntu 10.10上这样做

修改

来自settings.py

TEMPLATE_DIRS = (
    "home/kevin/first/tutorial/temps"
)

这曾经住过〜,但我搬进了项目文件夹,认为这会有所帮助。

结构(省略所有编译的python文件):

~/first/tutorial/:
__init__.py,
manage.py,
polls,
settings.py,
temps,
tut.db,
urls.py

temps:
index.html

polls:
admin.py,
__init__.py,
models.py,
tests.py,
views.py,

6 个答案:

答案 0 :(得分:8)

>>> TEMPLATE_DIRS = ( "home/kevin/first/tutorial/temps" )
>>> print TEMPLATE_DIRS
home/kevin/first/tutorial/temps
>>> type(TEMPLATE_DIRS)
<type 'str'>

这是一个字符串,而不是元组。

TEMPLATE_DIRS = ( "home/kevin/first/tutorial/temps", )

这是一个元组。一点点的Python问题。

此外,使用绝对路径而不是相对路径。

答案 1 :(得分:2)

首先,这可能与您的问题无关,但最好不要在文件中使用绝对路径。我的settings.py中总是有以下内容:

PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__))

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, 'templates'),
)

你的元组中的元素末尾应该总是有一个逗号,即使它是唯一的一个或最后一个元素,因此Python实际上认为它是一个元组而不是评估任何其他类型。 / p>

您还应该确保TEMPLATE_LOADERS设置包含或看起来像这样:

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

如果这不能解决问题(你仍然应该保留上述内容),问题很可能与你要呈现的模板有关。确认您在视图中使用的模板的字符串与templates目录中模板的相对路径正确对应。换句话说,如果视图中的模板字符串为'polls/index.html',请确保该文件实际位于templates/polls/index.html

答案 2 :(得分:1)

我在settings.py配置文件中使用的是:

"TEMPLATE_DIRS = (
             '/path/to/folder/Python-templates',
)"

它有效。我猜想(如果我错了,请纠正我)是django教程中的示例是在模板文件夹中引用模板的确切位置,即polls。因此,在本教程中的示例中,文件的polls/index.html路径是说index.html文件夹中的polls文件已在{{1}中指定的模板文件夹中}”。

答案 3 :(得分:0)

要检查的一些事项:

您是否使用绝对路径在settings.py中指定模板目录?

您是否将模板直接放入TEMPLATE_DIR目录中,或者您是否制作了一个民意调查子文件夹以将模板放入?

答案 4 :(得分:0)

我有与你描述的相同的问题,在Django教程的第三部分抛出TemplateDoesNotExist。

重新启动服务器为我解决了(没有更改任何配置)。希望有所帮助...

答案 5 :(得分:0)

这发生在我身上,因为我跳到了第三部分(我想了解模板)并且我忘了将 PollsConfig 添加到 INSTALLED_APPS

您的 mysite/settings.py 应该是这样的:

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

我做了这个改动后,模板都找到了。

这有点令人困惑,因为您不必这样做才能使您的视图起作用。但是,如果您的应用的配置不在 INSTALLED_APPS 中,模板肯定不会加载。