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)
看着:
我没有想法了。帮助。