【问题标题】:Not able overriding variable value from end file using Nunjucks无法使用 Nunjucks 覆盖来自最终文件的变量值
【发布时间】:2019-10-10 04:31:32
【问题描述】:

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

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

基础文件:base.html

<html class="{{htmlClass}}"> .. </html>

布局文件:layout.html

...
{% extends "html/_layouts/base.html" %}
{% set htmlClass = "class-1" %}
...

页面文件:page.html

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

实际生成的HTML文件有:

<html class="class-1"> .. </html>

预期生成的 HTML 文件应该有(它应该附加页面级别的变量值):

<html class="class-2"> .. </html>

请考虑我不想使用两个单独的变量。

之前我使用的是 PUG,我使用的是 block htmlClass 并用变量覆盖值 append htmlClass

我试图为 Nunjucks 找到类似的方法,不幸的是,我找不到append

提前谢谢????

【问题讨论】:

    标签: html jinja2 template-engine nunjucks


    【解决方案1】:

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

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

    现在我可以使用 Nunjucks 覆盖来自最终文件的变量值。

    【讨论】:

    • 注意这里需要添加到layout.htmlfile,所以它应该有'class-1'才能保持一致。它所做的是检查子模板是否已经设置了变量值,如果已经设置了,那么它不会覆盖它,而是使用该值。
    【解决方案2】:

    试试

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

    代替:

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

    设置 之前 扩展

    【讨论】:

    • 不,这无济于事,请参阅我的解决方案。
    猜你喜欢
    • 2018-07-29
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2022-11-21
    • 2020-01-05
    • 2018-04-26
    相关资源
    最近更新 更多