【问题标题】:Flask Jinja code inside two blocks with <b> HTML code带有 <b> HTML 代码的两个块内的 Flask Jinja 代码
【发布时间】:2015-09-07 08:31:47
【问题描述】:

谁能解释一下这几行代码?我知道我们正在设置 hl 以纠正其最小值是否低于突出显示的最小值,但我不明白为什么我们在打开粗体 HTML 代码后完成 if 块。我不应该在所有粗体代码之后加上endif 吗?

 {% set hl = weather[month]['max'] >= highlight['max'] %}
        {% if hl %}<b>{% endif %}
        {{ weather[month]['max'] }}
        {% if hl %}</b>{% endif %}

【问题讨论】:

  • 什么不清楚?如果您删除了第一个 endif 和第二个 if hl,则 整个块 将是有条件的,而不是它是否为粗体。事实上,为什么不做出改变,看看会发生什么?实验是一种很好的学习方式!

标签: python html flask jinja2


【解决方案1】:

if 出现两次,因为开始和结束粗体标记都是有条件的 - 文本以任何一种方式出现,只是它是否粗体随highlight['max'] 的值而变化。您显示的代码的替代方法是:

{% if weather[month]['max'] >= highlight['max'] %}
    <b>{{ weather[month]['max'] }}</b>
{% else %}
    {{ weather[month]['max'] }}
{% endif %}

这对于新手读者来说可能更清楚,但意味着 {{ weather[month]['max'] }} 部分的重复。

【讨论】:

    【解决方案2】:

    第一个if是打印开始标签,第二个是放置结束标签 并且始终打印该值。

    仅当此 if 为真时,该值才会为粗体,否则该值不会为粗体。

    {% set hl = weather[month]['max'] >= highlight['max'] %}
            {% if hl %} // <= Opening tag if the condition is true
                   <b>
            {% endif %}
    
               {{ weather[month]['max'] }} //  <= Value 
    
            {% if hl %} // <= Closing tag if the condition is true
                   </b>
            {% endif %}
    

    解释: 如果温度高于 highlight['max'] 中定义的最高温度,则用粗体标记。

    【讨论】:

    • 对不起,我仍然很困惑,不应该把值放在第一个结尾之前吗?
    • 你想生成类似这样的标签 VALUE 用于高温和 VALUE 用于常规,这就是为什么它被放置在 2 if 中
    • 是的,我明白了,但是为什么我们在 之前完成 if h1 不应该将值加粗然后完成 if 语句。是不是如果 h1 为真则加粗,加粗后完成 if 语句?
    • 有 2 种不同,如果为了避免打印 2 次值,请指点我是什么小姐让你感到困惑...
    • 好的,首先感谢您的帮助,我不明白 if 结束后 的效果如何仍然存在。就像它应该只在 h1 为真时才活着,对吧?在完成后,h1 不必为真。为什么我们在 之间放置两个 if 语句
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    相关资源
    最近更新 更多