No se puede mostrar la imagen de STATIC_FOLDER en la plantilla Flask

Configuré carpeta para archivos estáticos como este

app.config['STATIC_FOLDER'] = 'tmp' 

En la plantilla, uso una etiqueta img para mostrar una imagen almacenada en / tmp:

  

En firebug veo error 404 en lugar de imagen. Por favor, dime, ¿qué hice mal?

Gracias por adelantado.

No estoy seguro de qué elemento de configuración de STATIC_FOLDER está utilizando. ¿Dónde lo encontraste?

En realidad, existen dos argumentos para el constructor de la clase Flask que rigen la configuración de los archivos estáticos:

  • static_folder : por defecto es “static”. Este es el prefijo que debe usar en las URL para acceder a los archivos estáticos.

  • static_url_path : esta es la ubicación del disco de la carpeta estática. Por defecto, este valor es el mismo que la configuración de static_folder.

Por ejemplo, si usa esta configuración:

 from flask import Flask app = Flask(__name__, static_url_path = "/tmp", static_folder = "tmp") 

Luego podrás acceder a tus imágenes de la siguiente manera:

  

También puede eliminar la necesidad de tener un prefijo en las URL de la siguiente manera:

 from flask import Flask app = Flask(__name__, static_url_path = "", static_folder = "tmp") 

Y luego puedes acceder a tus imágenes como:

  

Tenga en cuenta que todavía necesita tener una raíz / .

Pero la mejor manera de hacerlo es no hacer referencia explícita a las rutas de imagen y, en su lugar, utilizar url_for para generar las URL correctas. Si está utilizando plantillas de Jinja2 sería:

  

Esta última expresión funcionaría independientemente de dónde y cómo se configuren los archivos estáticos.