Añadir un favicon

Un «favicon» es un icono utilizado por los navegadores para las pestañas y los marcadores. Esto ayuda a distinguir su sitio web y a darle una marca única.

Una pregunta común es cómo añadir un favicon a una aplicación Flask. Primero, por supuesto, necesitas un icono. Debe tener 16 × 16 píxeles y estar en el formato de archivo ICO. Esto no es un requisito, sino un estándar de facto soportado por todos los navegadores relevantes. Pon el icono en tu directorio estático como favicon.ico.

Ahora, para que los navegadores encuentren tu icono, la forma correcta es añadir una etiqueta de enlace en tu HTML. Así, por ejemplo:

<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">

Eso es todo lo que se necesita para la mayoría de los navegadores, sin embargo algunos muy antiguos no soportan este estándar. El antiguo estándar de facto es servir este archivo, con este nombre, en la raíz del sitio web. Si tu aplicación no está montada en la ruta raíz del dominio tienes que configurar el servidor web para que sirva el icono en la raíz o si no puedes hacerlo no tienes suerte. Sin embargo, si su aplicación es la raíz puede simplemente dirigir una redirección:

app.add_url_rule('/favicon.ico',
                 redirect_to=url_for('static', filename='favicon.ico'))

Si quieres ahorrarte la petición de redirección extra también puedes escribir una vista usando send_from_directory():

import os
from flask import send_from_directory

@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'static'),
                               'favicon.ico', mimetype='image/vnd.microsoft.icon')

Podemos omitir el mimetype explícito y se adivinará, pero también podemos especificarlo para evitar la adivinación extra, ya que siempre será el mismo.

Lo anterior servirá el icono a través de su aplicación y si es posible es mejor configurar su servidor web dedicado para servirlo; consulte la documentación del servidor web.

Véase también