Django:使用 Jinja2 作为引擎时找不到模板

art*_*tdv 5 python django django-templates jinja2

我正在使用 Django 1.8,它允许您为 Jinja2 切换 Django 模板引擎。

我的setting.py中有以下内容

TEMPLATES = [{
    'BACKEND': 'django.template.backends.jinja2.Jinja2',
    'DIRS': [
        os.path.join(BASE_DIR, 'templates/jinja2'),
    ],
    'APP_DIRS': True,
    'OPTIONS': {
        'environment': 'appname.jinja2.environment',
    }, 
},]
Run Code Online (Sandbox Code Playgroud)

我基本上使用来自http://jonathanchu.is/posts/upgrading-jinja2-templates-django-18-with-admin/的说明,除了我试图让引擎在模板文件夹中找到模板每个额外的应用程序。所以, :

??? myproject
?   ??? __init__.py
?   ??? jinja2.py
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? app2
?   ??? __init__.py
?   ???  other app stuff ...
??? templates
?   ??? jinja2
?       ??? app2
?           ??? template.html
??? manage.py
??? templates
?   ??? jinja2
?       ??? something.html
Run Code Online (Sandbox Code Playgroud)

这两个应用程序都已安装:

INSTALLED_APPS = (
    ...
    'myproject',
    'app2',
)
Run Code Online (Sandbox Code Playgroud)

myproject/jinja2.py 包含:

from __future__ import absolute_import  # Python 2 only
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
Run Code Online (Sandbox Code Playgroud)

但是,当我使用时,我仍然得到异常类型:TemplateDoesNotExist

from django.template.loader import get_template
template = get_template('app2/template.html') 
Run Code Online (Sandbox Code Playgroud)

我试过添加添加

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)
Run Code Online (Sandbox Code Playgroud)

尝试添加{'loader': Loader}到加载器所在的“选项”from django.template.loaders.app_directories import Loader以及使用一些 Jinja2 加载器。没有一个工作。

如果我将 DjangoTemplates 引擎添加为辅助引擎,它会找到模板。Jinja2 没有。之前,Debug Traceback 屏幕显示只有django.template.loaders.filesystem.Loader正在使用(就在 Traceback Switch to copy-and-paste view 的正下方),但现在它什么也没告诉我。

我正在使用 Windows 和开发服务器 ( manage.py runserver)。我TEMPLATE_DIRS在 settings.py 中没有任何内容(尽管将特定的应用程序模板目录硬编码到TEMPLATE_DIRS也没有解决问题;事实上,我收到警告The standalone TEMPLATE_* settings were deprecated in Django 1.8...,当我删除它时,我没有遇到任何问题(0 静音))

我的回溯中没有得到以下信息之一:

Template Loader Error:
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
Using loader django.template.loaders.app_directories.Loader:
Run Code Online (Sandbox Code Playgroud)

看着:

Django 找不到模板目录?

Django 找不到模板

Django 找不到应用模板

我没有想法了。帮助。