gpt4 book ai didi

templates - 在 Jinja2 中,什么时候应该使用宏,什么时候应该使用包含?

转载 作者:行者123 更新时间:2023-12-03 15:31:27 24 4
gpt4 key购买 nike

在 Jinja2 中,宏和包含似乎做几乎相同的事情。

例如

{% macro input(name, value='', type='text') -%}
<input type="{{ type }}" value="{{ value|e }}" name="{{ name }}">
{%- endmacro %}

{{ input('password', type='password') }}

-- versus --

{% include 'input.html' %}

input.html file>
<input type="{{ type }}" value="{{ value|e }}" name="{{ name }}">

为了阐明它们的用途:
  • 是否有一个时间可以工作,而另一个不能?
  • 如果两者都有效,我们什么时候应该更喜欢一个?
  • 最佳答案

    如果目标是简单地包含一个文本块,那么 macroinclude为同一个目标服务。但就像在你的例子中一样,macro s 更加灵活,可用于传递参数并使用它们。

    回答问题

  • 严格来说,在另一个不工作的情况下,一个会工作并不是绝对的。但是include确实需要一些灵活性。例如,如果我想使用 include 显示表单的几个不同字段声明,这很难做到。我必须为每个字段制作不同的模板文件并单独包含它们,因为它们不能接受参数,这会破坏目的。
  • 如果您认为有一大段代码应该放在不同的模板中以便更好地组织,并且不需要任何参数,例如页眉、页脚、复杂的导航菜单等,那么 include对这种情况有好处。但是当你有一些东西会重复多次并且可能需要一些动态参数时,例如表单域,那么你应该使用 macro为了它。
  • 关于templates - 在 Jinja2 中,什么时候应该使用宏,什么时候应该使用包含?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22287138/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com