首页 > 解决方案 > 如何从 Flask 中的 url_for() 检查静态文件是否存在?

问题描述

有没有办法可以检查静态文件url_for()是否真的存在?因为我想检查第一个文件是否不存在,所以我想在我的 html 文件中用另一个文件替换它,就像这样:

{% set IconPng = url_for('static', filename="images/favo.png") %}
{% set IconIco = url_for('static', filename="images/favo.ico") %}
{% set Default = url_for('static', filename="images/default.ico") %}

{% if IconPng %}
    <img src="{{IconPng}}" />
{% elif IconIco %}
    <img src="{{IconIco}}" />
{% else %}
    <img src="{{Default}}" />
{% endif %}

我已经尝试过上面的操作,也尝试过or像这样的操作符:

<img src="{{IconPng or IconIco or Default}}" />

但是,它不起作用。任何提示如何url_for()在 Flask 中进行此检查?

谢谢

标签: pythonflaskjinja2

解决方案


在我看来,javascript 比你的后端更重要。您可以使用这样的功能检查图像是否存在,然后相应地更改图像 src:

function file_exists(url){
    var http = new XMLHttpRequest();

    http.open('HEAD', url, false);
    http.send();

    return http.status != 404;
}

推荐阅读