代码之家  ›  专栏  ›  技术社区  ›  geckels1

在Django中,{%-和-%}在Djano模板中是什么意思?

  •  1
  • geckels1  · 技术社区  · 3 年前

    就我而言,我在这里或Django官方文档中都找不到这一点。添加什么 - 之后 {% 和之前 %} 在Django模板标签中是什么意思?以下是一个示例:

    {% if database -%}{{ database.name }}{%- else -%}blah{%- endif %}

    2 回复  |  直到 3 年前
        1
  •  1
  •   willeM_ Van Onsem    3 年前

    连字符与Django本身无关。我的猜测是,这些应该用于提示格式化后的代码正确格式化这些代码。

    之所以会出现这种情况,是因为如果我们查看 source code of the documentation [GitHub] ,我们看到:

    {% raw %}
    
    ```html
    <div class="class1 {% if condition -%}class2{%- endif %}">content</div>
    ^ space here
    ```
    
    {% endraw %}
    

    这个 {% raw %} {% endraw %} 用于文档本身的呈现引擎。连字符可能用于阻止渲染引擎 口译 我们希望将模板标记仅显示为代码,以防止出现这种情况 {% if condition %} 被自己解释。

    但看起来格式化的工作做得很糟糕,并保留了连字符,因此文档显示了应该如何呈现文档的一些“机制”。

        2
  •  0
  •   srn    3 年前

    这是Jinja2模板语法。这个 - 是控制如何处理空白的一部分。 https://jinja.palletsprojects.com/en/3.1.x/

    从文档中:

    如果在块的开始或结束处添加减号(-)(例如For 标签)、注释或变量表达式、或前面的空白处 之后该块将被移除

    推荐文章