Html 无法使用NUNJUCK从结束文件重写变量值

Html 无法使用NUNJUCK从结束文件重写变量值,html,jinja2,template-engine,nunjucks,Html,Jinja2,Template Engine,Nunjucks,我使用Nunjucks作为我的项目的模板引擎,我有以下场景 基本文件可以使用布局和页面级别变量并生成最终HTML 基本文件:Base.html <html class="{{htmlClass}}"> .. </html> 页面文件:Page.html ... {% extends "html/_layouts/layout.html" %} {% set htmlClass = "class-2" %} ... 实际生成的HTML文件具有: <html cla

我使用Nunjucks作为我的项目的模板引擎,我有以下场景

基本文件可以使用布局和页面级别变量并生成最终HTML

基本文件:Base.html

<html class="{{htmlClass}}"> .. </html>
页面文件:Page.html

...
{% extends "html/_layouts/layout.html" %}
{% set htmlClass = "class-2" %}
...
实际生成的HTML文件具有:

<html class="class-1"> .. </html>
。。
预期生成的HTML文件应具有(应附加页面级别变量值):

。。

请考虑我不想使用两个单独的变量。 以前我使用的是PUG,我使用的是

block-htmlClass
,并用变量覆盖value
append-htmlClass

我曾尝试为Nunjuck找到类似的方法,不幸的是,我找不到
append

提前感谢试试看

{% set htmlClass = "class-2" %}
{% extends "html/_layouts/layout.html" %}
而不是:

{% extends "html/_layouts/layout.html" %}
{% set htmlClass = "class-2" %}

设置扩展之前

最后,我找到了下面的解决方案

{% set htmlClass = htmlClass | default('class-2') %}

现在,我可以使用Nunjucks覆盖结束文件中的变量值。

不,这不会有帮助,请参阅我的解决方案。请注意,这需要添加到
layout.html
文件中,因此它应该具有
'class-1'
,以保持一致。它所做的是检查子模板是否已经设置了变量值,如果已经设置了,那么它将使用该值,而不是覆盖它。
{% extends "html/_layouts/layout.html" %}
{% set htmlClass = "class-2" %}
{% set htmlClass = htmlClass | default('class-2') %}