es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Hay alguna manera de utilizar archivos Css fuera de la carpeta de assets en Python Plotly Dash? / ¿Se pueden tener varias carpetas de assets?

Hola chicos, he estado trabajando en un proyecto bastante grande y es realmente desordenado colocar todos los archivos CSS en una sola carpeta cuando mi proyecto está dividido en muchas carpetas, por ejemplo:

-- assets (carpeta)
-- components (carpeta)
-- Header (carpeta)
-- Buttons.py
-- Title.py
-- DateDropdown.py
-- Body (carpeta)
-- Pages (carpeta)
-- page1.py
-- page2.py
-- SideNavBar (carpeta)
-- Footer (carpeta)
-- app.py

Y así sucesivamente con diferentes componentes. Ahora estoy buscando una solución como la forma en que trabajamos con CSS en React, poner el CSS de los archivos que lo usan en la misma carpeta, importar el CSS y usarlo, o abrir una carpeta de activos para cada gran componente como el encabezado, el pie de página, la barra lateral, etc.

¡Gracias por tomarte el tiempo de leer! Si tienes alguna idea, ¡compártela!

Ejemplo (actualización):
Tengo un árbol de carpetas que se ve así:

-- mainDash.py # la aplicación se inicia aquí
-- app.py # El diseño de la aplicación se inicia aquí
-- components # Carpeta
-- header.css
-- Header.py # El HTML del encabezado

El código del encabezado python:
import dash_html_components as html

header = html.Div(
id=’Header’,
children=[
html.Link(
rel=’stylesheet’,
href=’/components/header.css’
),
html.Div(“Costo médico familiar”)
]
)

El código del CSS del encabezado:

header {

flex: 1;
color: #fff;
font-size: 3vw;
display: flex;
justify-content: center;
align-items: center;

}

El código de inicio de la aplicación:

import dash
external_stylesheets = ['/components/header.css']
app = dash.Dash(name, external_stylesheets=external_stylesheets)

Intenté de ambos caminos, external_stylesheets y el camino HTML, pero ninguno funcionó. ¿Alguna idea de por qué?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como el proyecto está dividido en varias carpetas, puede ser difícil gestionar y organizar los archivos CSS. Una solución es crear una carpeta “assets” separada dentro de cada carpeta de componente y almacenar los archivos CSS específicos de ese componente en la carpeta assets.

    Por ejemplo:

    -- components/
        -- Header/
            -- assets/
                -- header.css
            -- Buttons.py
            -- Title.py
            -- DateDropdown.py
        -- Body/
            -- Pages/
                -- assets/
                    -- page1.css
                    -- page2.css
                -- page1.py
                -- page2.py
        -- SideNavBar/
            -- assets/
                -- sidenavbar.css
        -- Footer/
            -- assets/
                -- footer.css
    

    Luego, en los componentes que requieren CSS, importe el CSS de la siguiente manera:

    import dash_html_components as html
    
    header = html.Div(
        id='Header', 
        children=[
            html.Link(
                rel='stylesheet',
                href='/assets/header.css' # agregar ruta al archivo CSS
            ),
            html.Div("Medical Cost Personal")
        ]
    )
    

    En su archivo mainDash.py o app.py, puede agregar los estilos externos de la siguiente manera:

    import dash
    external_stylesheets = ['/components/Header/assets/header.css', 
                            '/components/Body/Pages/assets/page1.css',
                            '/components/Body/Pages/assets/page2.css',
                            '/components/SideNavBar/assets/sidenavbar.css',
                            '/components/Footer/assets/footer.css']
    app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
    

    De esta manera, los archivos CSS de cada componente están separados y son más fáciles de manejar, al mismo tiempo que son accesibles para los componentes que los requieren.

    Con respecto al problema con external_stylesheets y el método de enlace HTML que no funciona, asegúrese de que las rutas de los archivos CSS sean correctas y de que el servidor esté configurado para servirlos. Puede ser útil utilizar las herramientas de desarrollador en el navegador web para inspeccionar las solicitudes de red y ver si los archivos CSS se cargan correctamente o si hay algún error.

Comments are closed.