if语句基于是否从外部URL加载图像

时间:2017-10-31 13:25:42

标签: python web flask jinja2

我很难解决这个问题 - 所以Stackoverflow可能已经有了答案 - 但我正在使用一个API,它提供外部URL的图像链接以及JSON文件中的其他数据。不幸的是,一些链接不再有效。

我的目标是在if语句中确定这一点,如果图像没有加载,也不要加载任何其他数据。

这是我尝试过的代码,但不幸的是,有些项目仍在通过:

{% for i in range(cards[setName]|length) %}
    {% if cards[setName][i]['img'] %}
        <p>{{ cards[setName][i]['name'] }}</p>
        <a href="{{ cards[setName][i]['img'] }}">
            <img src="{{ cards[setName][i]['img'] }}">
        </a>
    {% endif %}
{% endfor %}

2 个答案:

答案 0 :(得分:1)

Jinja不知道链接是否有效。它只是一个字符串。因此,要么在api中发送JSON之前进行此检查,要么使用注释中建议的javascript解决方案来隐藏失败的图像。

进行检查&#39;只是&#39;在发送json之前,这是一个坏主意,因为你会打开许多​​检查每个网址的请求。最好使用异步作业来检查数据库中的图像。

另外,为什么在范围内使用i?这样做也会增加可读性。

{% for card in cards[setName] %}
    {% if card['img'] %}
        <p>{{ card['name'] }}</p>
        <a href="{{ card['img'] }}">
            <img src="{{ card['img'] }}">
        </a>
    {% endif %}
{% endfor %}

答案 1 :(得分:1)

这是一个最小的例子。根据您的需要进行修改。它所做的就是如果图像没有加载,它会隐藏img的父div。

l1 = df[(df['Grade'] == 'A') & (df['Label'] == 'M')]

如果div是img的祖父,而不是父,要访问它,请使用:

<div> <!-- this div contains the image and other data -->

    <img src="path/to/image.jpg" onError="this.onerror = '';this.parentElement.style.display='none';">

    <!-- ... other data ... -->
</div>