2011-09-27 83 views
15

每個金字塔應用程序都有一個關聯的.ini文件,其中包含其設置。例如,默認情況下可能看起來像:金字塔和.ini配置

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

我想知道是否有可能在裏面添加自己的配置值,並在運行時讀取它們(主要是從一個視圖中調用)。例如,我可能想要

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

或者是否有更好的方法是在啓動期間有一個單獨的.ini文件並解析它?

回答

26

當然可以。

在您的入口點功能(main(global_config, **settings)__init__.py在大多數情況下),您的配置可通過settings變量訪問。

例如,在你的.ini

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

在你__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() 

按照latest Pyramid docs,你可以在視圖功能通過request.registry.settings訪問設置。此外,據我所知,它將通過event.request.registry.settings在活動用戶中。

關於你關於使用另一個文件的問題,我敢肯定,把你的所有配置放在常規的init文件中是一種很好的做法,使用像你這樣的虛線符號。