Django的自定义模板标签删除HTML内容

时间:2017-03-19 17:54:57

标签: html django django-templates

我已经创建了一个自定义标记来隐藏HTML中的零值。我使用它来隐藏货币格式的数字,当它的值为零时。

这是我的自定义标记:

def hideifz(value):
    return '' if value == 0 else value

问题是这个标签删除了我的一些HTML。

这是我模板的相关部分:

<div class="price">
    <span class="price-new">{{ publication.price_record.low_price|CLP }}</span>
    <span class="price-old">{{ publication.price_record.high_price|hideifz|CLP }}</span>
</div>

此HTML用于显示产品价格。 publication.price_record.low_pricepublication.price_record.high_price是我的产品的价格。如果产品在销售中,则必须为high_price != 0,并且此值必须显示在HTML中。

CLP只是货币格式的另一个标签:

def toCLP(value):
    if not value:
        return value
    return '$'+intcomma(int(value)).replace(',', '.')

如果high_price不为零,则输出HTML没问题。例如:

<div class="price">
    <span class="price-new">$75.990</span>
    <span class="price-old">$83.990</span>
</div>

另一方面,如果high_price为零,我的部分HTML将被删除:

<div class="price">$21.990</div>

请注意,span.price-newspan.price-old已被删除。

现在,如果删除hideifz标记,前一个示例的输出如下所示:

<div class="price">
    <span class="price-new">$21.990</span>
    <span class="price-old">0.0</span>
</div>

当我删除hideifz标记时,跨度回来了。

我只是想隐藏html中的python变量/值,保留外部span用于其他用途。

我知道我可以通过简单地使用{% if val %}标签来解决这个问题,但我想创建一个简单的标签。

我正在使用django 1.10。

谢谢你。

0 个答案:

没有答案