在Wagtail流场模板中,如何检查structblock内structblock的字段是否为空?

时间:2019-12-18 21:25:04

标签: wagtail wagtail-streamfield

我有一个这样的StructBlock:

class CardBlock(blocks.StructBlock):
header= blocks.StructBlock([
    ("text", blocks.CharBlock(required=False, help_text="Header text")),
    ("classes", blocks.CharBlock(required=False, help_text="Header css classes")),
    ],
    template="streams/card_header_block.html")

image= ImageChooserBlock(required=False)
icon= blocks.CharBlock(required=False, help_text="fontawesome classes for an icon")

title= blocks.StructBlock([
    ("text", blocks.CharBlock(required=False, help_text="Title text")),
    ("classes", blocks.CharBlock(required=False, help_text="Title css classes")),
    ],
    template="streams/card_title_block.html")

bodyHTML = blocks.RawHTMLBlock()

footer= blocks.StructBlock([
    ("text", blocks.CharBlock(required=False, help_text="Footer text")),
    ("classes", blocks.CharBlock(required=False, help_text="Footer css classes")),
    ],
    template="streams/card_footer_block.html")

class Meta:
    template = "streams/card_block.html"
    icon = "placeholder"
    label = "Card"

还有这样的模板:

{% load wagtailcore_tags %}
{% load wagtailimages_tags %}

{% image value.image fill-300x150 as img %}
<div class="card {% if value.classes %} {{value.classes}} {% endif %}">
    {% if value.header.text is not Null %}
        {% include_block value.header %}
    {% endif %}

    {% if value.image %}
    <img src="{{ img.url }}" alt="{{ img.alt}}" class="card-img-top" />
    {% endif %}

    <div class="card-body">
        {% if value.title %}
            {% include_block value.title%}
        {% endif %}

        {% if value.subtitle %}
            {% include_block value.subtitle%}
        {% endif %}

        <div class="card-text">{% include_block value.bodyHTML %}</div>

        {% if value.link %}
            {% include_block value.link%}
        {% endif %}
    </div>
    {% if value.footer %}
        {% include_block value.footer%}
    {% endif%}
</div>

我正在尝试检查是否有一个子块,如Header,其值是否由页面编辑器填充。如果没有,我不显示HTML。但我恐怕标题div仍然会出现。我提出条件的方式有些错误。

1 个答案:

答案 0 :(得分:0)

空白的<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <div class="container"> <div class="row"> <div class="col-6"> <div class="block"> </div> </div> <div class="col-6"> <div class="block"> </div> </div> <div class="col-6"> <div class="block"> </div> </div> <div class="col-6"> <div class="block"> </div> </div> </div> </div>等于空字符串,它不等于null(在任何情况下,Python的null值为CharBlock,而不是None)。您可以使用与测试模板中其他空值相同的方法进行测试:Null