2011-09-27 15 views
15

Ogni applicazione Pyramid ha un file .ini associato che contiene le sue impostazioni. Ad esempio, un default potrebbe essere simile:Configurazione piramide e .ini

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

Mi chiedo se è possibile aggiungere i propri valori di configurazione in là, e leggerli a run-time (per lo più da una visione callable). Per esempio, potrei voler avere

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

o è meglio avere un file .ini separato e analizzarlo durante l'avvio?

risposta

26

Certo che puoi.

Nella funzione punto di ingresso (main(global_config, **settings) in __init__.py nella maggior parte dei casi), la configurazione è accessibile nella variabile settings.

Per esempio, nella vostra .ini:

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

Nel vostro __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() 

Secondo il latest Pyramid docs, è possibile accedere alle impostazioni in una funzione di visualizzazione tramite request.registry.settings. Inoltre, per quanto ne so, sarà negli abbonati dell'evento via event.request.registry.settings.

Per quanto riguarda la tua domanda sull'utilizzo di un altro file, sono abbastanza sicuro che è buona norma mettere tutta la tua configurazione nel normale file di init, usando la notazione puntata come hai fatto tu.