遇到未知标签'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'的主要内容,如果未能解决你的问题,请参考以下文章

图像识别遇到未知物体怎么办?

Python RandomForest - 未知标签错误

js兼容ie8-未知的运行时错误

Android rtl viewpager with rtl tablayout

SignedXml 报告“遇到未知转换。”

pptpsetup 遇到错误:“EAP:未知身份验证类型 26;Naking”