Al tratar de cargar el favicon , he seguido las sugerencias de Internet:
server = Flask(__name__, static_folder='static') app = dash.Dash(external_stylesheets=external_stylesheets, server=server) app.css.config.serve_locally = False app.scripts.config.serve_locally = True @server.route('/favicon.ico') def favicon(): print('Server root path', server.root_path) return send_from_directory(os.path.join(server.root_path, 'static'), 'dice.ico', mimetype='image/vnd.microsoft.icon') ... app.run_server(debug=True) Si busco el favicon , lo veo:
http://www.example.com/favicon.icoSin embargo, cuando navego a
http://www.example.com Veo el ícono predeterminado del dash con su propia descripción. ¿Cómo me aseguro de que mi propio favicon se cargue correctamente?
Simplemente puede poner title="My Title" como argumento al establecer la instancia de la aplicación Dash. es decir
app = dash.Dash( __name__, title="My Title", server=server, routes_pathname_prefix='/dash/' )Una alternativa utilizada en Dash es:
app = dash.Dash() app._favicon = ("path_to_folder/(your_icon).co")Debe crear una carpeta de "activos" y luego actualizar la propiedad "__favicon" en su aplicación Dash:
app._favicon = "favico.ico"Añadiendo en aras de la exhaustividad. Hoy en día, se recomienda utilizar un paquete de íconos con diferentes resoluciones para complacer a diferentes navegadores y garantizar la mejor calidad de imagen. Puede producir un paquete de este tipo con la ayuda de, por ejemplo, realfavicongenerator.net O simplemente puede querer usar un icono .png o .svg no estándar.
Para eso, puede crear una subclase de Dash y agregar las metaetiquetas y rel de enlace que tanto desea a su método interpolate_index:
import dash class CustomDash(dash.Dash): def interpolate_index(self, **kwargs): return ''' <!DOCTYPE html> <html> <head> {metas} <title>{title}</title> <link rel="apple-touch-icon" sizes="180x180" href="assets/favicons/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="assets/favicons/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="assets/favicons/favicon-16x16.png"> <link rel="manifest" href="assets/favicons/site.webmanifest"> <link rel="mask-icon" href="assets/favicons/safari-pinned-tab.svg" color="#5bbad5"> <meta name="msapplication-TileColor" content="#da532c"> <meta name="theme-color" content="#ffffff"> {css} </head> <body> {app_entry} <footer> {config} {scripts} {renderer} </footer> </body> </html> '''.format(**kwargs) app = CustomDash()¡No olvide colocar el paquete descomprimido en su subcarpeta assets/favicons!
Incluso si la respuesta aceptada de OP no funciona, consulte el documento oficial que dice:
Se recomienda agregar el nombre al inicio del guión para garantizar que se carguen los recursos en la carpeta de activos, por ejemplo: app = dash.Dash( name , meta_tags=[...]). Cuando ejecuta su aplicación a través de alguna otra línea de comando (como el comando de matraz o gunicorn/waitress), el módulo principal ya no se ubicará donde se encuentra app.py. Al establecer explícitamente el nombre , Dash podrá ubicar la carpeta de activos relativa correctamente.
Incluya __name__ en el objeto Dash:
app = Dash(__name__)Para simplemente cambiar el favicon , todo lo que necesita hacer es crear una carpeta llamada assets al lado de su app.py y colocar su favicon.ico dentro de esa carpeta y funcionará perfectamente.
aplicación.py:
import flask import dash import dash_html_components as html server = flask.Flask(__name__) @server.route('/') def index(): return 'Hello Flask app' app = dash.Dash( __name__, server=server, routes_pathname_prefix='/dash/' ) app.layout = html.Div("My Dash app") if __name__ == '__main__': app.run_server(debug=True)Aquí está el enlace de documentos para obtener más información: Documentos de Dash