Una página Flask puede renderizarse sin problemas y, aun así, dejar en blanco la pestaña del navegador cuando el proyecto no incluye un enlace al favicon. La configuración más limpia del flask favicon consiste en guardar el icono en el directorio static de Flask y enlazarlo desde tu plantilla Jinja compartida.
¿Qué necesitas antes de empezar?
- Un proyecto Flask en ejecución con un archivo
templates/base.html. - Un archivo de icono llamado
favicon.ico; un ICO con varios tamaños es una alternativa práctica para los navegadores. - Acceso al archivo que genera el head HTML compartido de tu sitio.
¿Cómo añadir un flask favicon en cinco pasos?
-
1. Coloca el icono en el directorio static
Crea estas carpetas si no existen y coloca el archivo aquí:
myapp/ ├── app.py ├── static/ │ └── favicon.ico └── templates/ └── base.htmlNo renombres un PNG como
favicon.ico; usa un ICO real. Para los formatos de enlace PNG y SVG, consulta la guía de favicon en HTML. -
2. Añade el enlace a tu plantilla base
El HTML Standard define los enlaces
rel='icon'a recursos de iconos externos. Añade este bloque dentro del<head>existente entemplates/base.html:{% block head %} <link rel='icon' href='{{ url_for('static', filename='favicon.ico') }}'> {% endblock %}El uso de
url_forevita tener rutas fijas cuando la aplicación utiliza un prefijo de URL o una ruta static personalizada. -
3. Haz que cada página lo herede
Extiende la plantilla base desde cada página. Si su bloque head tiene otro nombre, sustituye ese nombre a continuación:
{% extends 'base.html' %} {% block head %} {{ super() }} {% endblock %}La llamada
super()conserva el favicon y permite que cada página añada más contenido al head. -
4. Ejecuta la aplicación y verifica la respuesta
Inicia el servidor de desarrollo y abre directamente la URL del icono:
flask --app app run --debug # Open http://127.0.0.1:5000/static/favicon.icoLa petición directa debería devolver el icono, no HTML ni un 404. Inspecciona el
<head>renderizado y comprueba que contiene el enlacerel='icon'generado porurl_for. -
5. Despliega con una URL pública estable
En producción, sirve
static/favicon.icocomo un recurso static, no a través de una ruta de la aplicación. Mantén el nombre del archivo sin cambios; al reemplazar un icono antiguo, usafavicon-v2.icoy actualiza la plantilla para evitar que una copia obsoleta siga en la caché.
¿Qué suele romperse?
- Pestaña en blanco: el archivo existe, pero la plantilla no lo referencia o el enlace está fuera del head del documento.
- 404 en el panel de red: el archivo está en el directorio equivocado o la URL estática hard-coded no coincide con tu despliegue.
- El icono antiguo sigue apareciendo: el navegador está usando una copia en caché. Cambia el nombre del asset o consulta la guía de cache-busting del favicon.
- Imagen rota: el archivo tiene una etiqueta incorrecta o el servidor devuelve el content type equivocado.
¿Cuándo está completa la configuración del favicon de Flask?
La configuración está completa cuando la URL directa del icono devuelve el archivo y todas las páginas heredan la declaración rel='icon'. ¿Necesitas el artwork original? Mzu favicondl puede preparar los archivos favicon antes de añadirlos a Flask.