遇到未知标签'with'
Posted
技术标签:
【中文标题】遇到未知标签\'with\'【英文标题】:Encountered unknown tag 'with'遇到未知标签'with' 【发布时间】:2015-10-12 16:56:05 【问题描述】:尝试在 django 1.8 中使用 jinja2 模板时遇到以下错误“遇到未知标签 'with'”。
相同的模板在我的烧瓶应用程序上运行良好,但在尝试使用 jinja 2 的 with 功能时出现该错误。
神社模板内部
% with %
% set vartest = 42 %
vartest
% endwith %
我的 jinja2 环境自定义内部
def environment(**options):
env = Environment(**options)
env.globals.update(
'static': staticfiles_storage.url,
'url_for': reverse,
'STATIC_URL': STATIC_URL
)
return env
【问题讨论】:
你知道你使用的是哪个版本的jinja2
吗? with
是 2.3 中的新功能。
pip show 给我名称:Jinja2 版本:2.7.3
看来with
是an extension,在创建Environment
之前尝试添加options.setdefault('extensions', []).append('jinja2.ext.with_')
。
谢谢你,解决了这个问题,请作为答案提交,我会投赞成票。
【参考方案1】:
with
statement 是 Jinja 2.3 版中新增的;如果您有更早的版本,请使用pip install --upgrade Jinja2
获取最新版本。
它也是an extension,因此您必须将它包含在Environment
中,例如通过添加:
options.setdefault('extensions', []).append('jinja2.ext.with_')
【讨论】:
您是否还可以添加一个注释,您也可以将其放入您的设置文件中,我敢打赌大多数人可能会使用它。感谢您对此提供的帮助。 @Moylin 我不知道它的语法;为什么不将其添加为单独的答案? 只是好奇,该功能是否记录在某处,我什至没有看到在哪里传递扩展配置。 如果 Jinja 文档在 with 语句被记录的地方引用了这个,那就太好了......谢谢。【参考方案2】:这也可以在您的设置文件中进行配置。
TEMPLATES = [
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
'your/django/templates',
],
'APP_DIRS': True,
,
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [
'your/jinja2/templates.',
],
'OPTIONS':
'environment': 'app.project.jinja2.environment',
'extensions': ['jinja2.ext.with_']
]
【讨论】:
以上是关于遇到未知标签'with'的主要内容,如果未能解决你的问题,请参考以下文章