python教程—小胡子模板可以做模板扩展吗?-Python实用宝典

python教程—小胡子模板可以做模板扩展吗?

我对胡子不熟。许多模板语言(例如Django / Jinja)允许您像这样扩展“父”模板……

我对胡子不熟。

许多模板语言(例如,Django / Jinja)将允许您像这样扩展“父”模板……

base.html

    <html><head></head> <body> {% block content %}{% endblock %} </body> </html>

frontpage.html

    {% extends "base.html" %} {% block content %}<h1>Foobar!</h1>{% endblock %}

呈现frontpage.html

    <html><head></head> <body> <h1>Foobar!</h1> </body> </html>

我知道Mustache的偏微分(例如{{> content}}),但是这些似乎只是包含了

胡须是否有模板扩展?或者,如果做不到这一点,至少有一些设计模式可以有效地将包括转换为模板扩展等效项。

回答

最近我发现自己也遇到了同样的情况,只是我来自马科。

Mustache不允许模板扩展/继承,但据我所知,您有一些可用的选项。

  1. 你可以用偏微分:

      {{>header}} Hello {{name}} {{>footer}}
  2. 您可以将模板预处理函数注入到需要从其他页面继承的每个模板的上下文中:

      {{#extendBase}} Hello {{name}} {{/extendBase}}

    散列:

      { "name": "Walden", "extendBase": function() { return function(text) { return "<html><head></head>" + render(text) + "</body></html>" } } }
  3. 将所需的HTML预先添加到控制器中的相关页面。

  4. 有一个布局模板ala:

      {{>header}} {{{body}}} {{>footer}}

    并在控制器中呈现主体,将其作为一个名为主体的变量传递给布局模板。

  5. 在加载模板的代码中实现模板继承(pre-mustache)。

但是,我不会使用三重胡子,因为我不想让未转义HTML出现在任何地方,在我看来,这太冒险了。

如果有人对这个问题有更好的解决方案,我也很想听听,因为我还没有在这些方向中进行尝试。

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论