我正在尝试在我的Django项目中使用jinja2(版本1.10)。设置完成后,一旦我尝试运行项目,我就会得到TemplateDoesNotExist at /base/index.html
和
Template-loader postmortem
Django tried loading these templates, in this order:
Using engine jinja2:
This engine did not provide a list of tried templates.
在templates
文件夹中,我有一个放置index.html的基目录。而且,如果我使用Django的模板引擎,这个相同的文件夹结构可以很好地工作。我该如何解决这个问题?
我的配置如下:
在settings.py
中(注意我故意排除了Django模板后备):
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {'environment': 'uberfordoc.jinja2.environment',
},
},
]
我还在项目文件夹中保存了一个名为jinja2.py
的文件:
from __future__ import absolute_import
from django.contrib.staticfiles.storage import staticfiles_storage
from django.core.urlresolvers import reverse
from jinja2 import Environment
def environment(**options):
env = Environment(**options)
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
})
return env
答案 0 :(得分:2)
这是我在settings.py中的BASE_DIR和MAIN_DIR
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
MAIN_DIR = os.path.dirname(os.path.dirname(__file__))
我的jinja2模板位于路径
<强> /用户/用户名/桌面/ uberfordoc /模板/ Jinja2的强>
改变
'DIRS': [os.path.join(BASE_DIR, 'templates')],
到
'DIRS': [os.path.join(MAIN_DIR, 'templates/jinja2')],
它有效。感谢@Timbadu打印
print os.path.join(BASE_DIR, 'templates')