2011-08-18 13 views
45

Estoy usando Flask versión 0.7. He guardado el camino de contenido estático en un archivo de configuración y la cargó utilizandoFrasco - Accediendo a la variable de configuración en la plantilla

app.config.from_envvar(<file_name>) 

¿Puedo ser capaz de acceder a esta variable de configuración en la plantilla sin pasar a través de las variables de la vista?

+0

Usé app.config.from_pyfile () para cargar la configuración a la variable de configuración del matraz. Desde Flask 0.6; config, al ser una de las variables globales, está disponible en plantillas Jinja2 de forma predeterminada. Luego se puede acceder fácilmente a las variables de configuración como un objeto de diccionario en las plantillas. – ranendra

Respuesta

79

Hay algunas variables globales que se pasan en el contexto de plantillas por defecto, mediante agitación (here es la lista completa), siendo uno de ellos config, lo que le permite acceder a la configuración de la aplicación a partir de plantillas. Al ser un diccionario, se puede acceder utilizando la sintaxis config['MY_CONFIGURATION'] o config.MY_CONFIGURATION (esta sintaxis para acceder a elementos dict es específica de Jinja).

Por otro lado, si quisiera pasar datos arbitrarios a sus plantillas sin tener que pasarlas explícitamente en cada vista, debería usar context processors.

+15

Me gustaría señalar que "solo los valores en mayúsculas se almacenan realmente en el objeto config"; esto me dio unos minutos de confusión cuando me enfrenté a la misma pregunta que el cartel. – mikewaters

+1

No olvide volver a cargar Flask si está almacenando sus valores de configuración en un archivo Python en modo de depuración, los cambios en este archivo no se observan. – Epoc

+4

Ejemplo de uso en la plantilla: '{{config.MY_CONFIGURATION}}' –

Cuestiones relacionadas