2011-09-27 16 views
15

Cada aplicación Pyramid tiene un archivo .ini asociado que contiene su configuración. Por ejemplo, un defecto podría ser:Configuración de pirámide y .ini

[app:main] 
use = egg:MyProject 
pyramid.reload_templates = true 
pyramid.debug_authorization = false 
pyramid.debug_notfound = false 
pyramid.debug_routematch = false 
... 

Me pregunto si es posible añadir sus propios valores de configuración de allí, y leerlos en tiempo de ejecución (en su mayoría de una vista exigible). Por ejemplo, puede que desee tener

[app:main] 
blog.title = "Custom blog name" 
blog.comments_enabled = true 
... 

O es mejor tener un archivo .ini independiente y analizarlo durante el inicio?

Respuesta

26

Claro que puedes.

En su función de punto de entrada (main(global_config, **settings) en __init__.py en la mayoría de los casos), su configuración está accesible en la variable settings.

Por ejemplo, en su .ini:

[app:main] 
blog.title = "Custom blog name" 
blog.comments_enabled = true 

En su __init__.py:

def main(global_config, **settings): 
    config = Configurator(settings=settings) 
    blog_title = settings['blog.title'] 
    # you can also access you settings via config 
    comments_enabled = config.registry.settings['blog.comments_enabled'] 
    return config.make_wsgi_app() 

De acuerdo con la latest Pyramid docs, puede acceder a la configuración de una función de vista a través de request.registry.settings. Además, hasta donde sé, será en los suscriptores del evento a través del event.request.registry.settings.

En cuanto a su pregunta sobre el uso de otro archivo, estoy bastante seguro de que es una buena práctica poner todas sus configuraciones en el archivo init normal, usando notación punteada como lo hizo.

Cuestiones relacionadas