Jinja2在Django项目中抛出templatedoesnotexist错误

时间:2017-01-19 16:37:34

标签: django jinja2

我正在尝试在我的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

1 个答案:

答案 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')