我在Django 1.6.2上得到“TemplateDoesNotExist at /”error 。 Stackoverflow多次介绍,但到目前为止没有任何工作。
模板是他们自己文件夹的一部分,不存储在应用程序中。
manage.py
project_dir
|_ settings.py
|_ urls.py
|_ apps
\_ app1
\_ views.py
|_ urls.py
|_ models.py
|_ templates
\_ base.html
\_ pages
\_ index.html
我已将TEMPLATE_DIR
和TEMPLATE_LOADERS
设置如下:
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(os.path.join(BASE_DIR, 'project/apps/'))
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'project/templates/'),
)
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
当我打印文件夹TEMPLATE_DIRS
和BASE_DIR
时,它们完全没问题。
当我复制TEMPLATE_DIRS
的打印输出并直接在浏览器中查看时,我可以查看该模板。
我注意到一个奇怪的事情是加载程序django.template.loaders.filesystem.Loader
没有列出错误消息中的任何文件夹。 django.template.loaders.app_directories.Loader
列出了与应用相关的一些文件夹。
通过urls.py
调用模板from django.views.generic.base import TemplateView
...
urlpatterns = patterns('',
url(r'^$', TemplateView.as_view(template_name='app1/index.html'), name='index'),
...
)
模板错误的原因是什么?
答案 0 :(得分:3)
我无法看到任何" app1 / index.html"在文件结构中。
根据提供的内容,它应该是
url(r'^$', TemplateView.as_view(template_name='pages/index.html'), name='index'),
答案 1 :(得分:0)
你可以添加一些东西吗?我想查看整个目录设置,包括settings.py
的位置。我担心你的BASE_DIR
或TEMPLATE_DIRS
错了。我认为TEMPLATE_DIRS只是'templates'
而不是'project/templates'
,但它可以用于您的设置。
如果不是这样,您可以发布views.py
和您要拨打的模板代码吗?
答案 2 :(得分:0)
settings.py
,发现TEMPLATE_DIRS
有第二个定义。这覆盖了所有设置的目录,也解释了django.template.loaders.app_directories.Loader
为空的原因。