【发布时间】:2026-02-11 13:20:09
【问题描述】:
我有一个 Django 1.10 项目(使用 Python 3.5 和用于模板的 Jinja2 2.8)设置如下:
*将红色标记视为mysite
文件jinja2.py 定义了这个:
from __future__ import absolute_import
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
from jinja2 import Environment
def environment(**options):
env = Environment(**options)
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
})
return env
这个文件在settings.py 中被调用是这样的:
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'environment': 'mysite.jinja2.environment',
},
},
但是当我运行服务器并访问带有调用 Jinja2 模板的视图的 URL 时,我收到以下错误:
我花了几个小时在互联网上寻找解决方案,但无法解决。
整个设置是按照官方 Django 文档完成的:https://docs.djangoproject.com/en/1.10/topics/templates/#django.template.backends.jinja2.Jinja2
感谢您的回复
【问题讨论】:
-
您使用的是哪个版本的 jinja?还要尝试删除
from __future__ import absolute_import行,因为它仅适用于 Python 2。 -
这是 Jinja2 2.8。我现在已经在原帖中编辑并提到了这一点。谢谢!
__future__import 只是为了向后兼容;我尝试删除它,但仍然是同样的错误。 -
你确定应该是
'environment': 'mysite.jinja2.environment',而不是'environment': 'jinja2.environment',吗? -
是的,我确定,因为我已经在项目根目录的
jinja2.py中定义了它。