python - 如何通过 Flask 中的 url_for() 检查静态文件是否存在?

标签 python flask jinja2

有什么方法可以检查来自 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 %}

我已经尝试过上面的方法以及运算符,例如:

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

但是,它不起作用。有什么提示我如何在 Flask 中对 url_for() 进行检查?

谢谢

最佳答案

在我看来,这对 javascript 来说是一个任务,而不是你的后端。 您可以使用这样的函数检查图像是否存在,然后相应地更改图像 src:

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

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

    return http.status != 404;
}

关于python - 如何通过 Flask 中的 url_for() 检查静态文件是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62790012/

相关文章:

python - 将查询结果重定向到另一个页面 flask

ansible - 有条件地将参数添加到 argv

python - 属性错误: 'list' object has no attribute '_Stack__items'

python - 通过互联网/多种协议(protocol)导入 python 模块或动态创建模块

python - 为什么当 View 引发异常时只调用一个 Flask teardown_request 函数?

python - 我如何对这个 Flask 应用程序进行单元测试?

javascript - 单击警报框中的 'ok' 后,它应该保留在同一页面中

javascript - Flask with Jinja2 - 使用 Jinja2 语句将值从 Flask 传递到 Javascript

python - 检查 Python 中是否存在 *type* 文件

python - 在 QQuickWidget 内更新/重新绘制仪表