2012-06-05 20 views
12

Hay un development.ini o production.ini en un proyecto de pirámide. Añado mis propios datos de configuración en los archivos ini como:¿cómo puedo obtener los datos ini en pirámide?

[thrift] 
host = 0.0.0.0 
port = 8080 

y quiero utilizar los datos de configuración en uno de los archivos py en el proyecto. ¿Cómo puedo obtener los datos sin el objeto de solicitud? (He visto una solución que usa la solicitud.)

Respuesta

21

Puede acceder a la configuración en request.registry.settings o pyramid.threadlocal.get_current_registry().settings. Se comporta como un diccionario.

Si desea utilizar el segundo, es decir obtener la configuración sin tener la solicitud, tengo que advertirle. De acuerdo con the doc:

Esta función se debe utilizar muy poco, por lo general sólo en la unidad código de prueba. casi siempre es generalmente un error usar get_current_registry fuera de un contexto de prueba porque su uso hace que sea posible escribir código que no se puede probar fácilmente ni con guiones.

Cualquier parte de su código que necesite acceso a la configuración es parte de la aplicación web, y debe acceder a la solicitud, no a algún elemento mágico accesible global. Puede pensar que tiene una buena razón, pero probablemente haya una mejor manera. Si desea discutir eso (tal vez en otra pregunta si es complejo, ya que algún código podría ser útil), con gusto lo ayudaré a encontrar una manera limpia de hacerlo.

+1

Gracias. Editado para hacerlo más claro en la respuesta. Por cierto, el registro no es el archivo de configuración (ver http://pyramid.readthedocs.org/en/1.3-branch/glossary.html#term-application-registry). – madjar

+0

Tenga en cuenta que para agregar una configuración personalizada y usar esta respuesta no puede agregarla en una sección nueva. Debe agregarlo a la sección [aplicación: principal] existente. Consulte [la documentación] (http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html#adding-a-custom-setting). – Zitrax

2

Cada vez que me pregunto cómo hacer algo en la pirámide, generalmente me refiero a uno de los ejemplos de la pirámide en github.

Parsing Example Pyramid Config

no sé cómo "pyrmadic" que son, sino que usaully trabajan muy bien. Aquí solo usan ConfigParser como lo haría en cualquier proyecto de Python para analizar sus archivos .ini

-2

Piense en 'python' en lugar de 'pyramid'.

import ConfigParser 

config = ConfigParser.ConfigParser() 
config.read('development.ini') 
db_url = config.get('app:main', 'sqlalchemy.url') 
+1

Pyramid usa 'PasteDeploy' en su sabiduría infinita. 'ConfigParser' no funcionará: no acepta tener' .' ​​en los nombres de las teclas. – NuclearPeon

+1

La codificación es una mala práctica. – karantan

Cuestiones relacionadas