2011-09-27 13 views
15

Her Pyramid uygulamasında, ayarlarını içeren ilişkili bir .ini dosyası vardır. orada kendi yapılandırma değerlerini eklemek mümkün olup olmadığını merak ediyorumPiramit ve .ini yapılandırması

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

ve (çoğunlukla bir görünüm çağrılabilir itibaren) çalışma anında onları okuyun: Örneğin, bir varsayılan gibi görünebilir. Örneğin, ayrı bir .ini dosyası var ve başlangıç ​​sırasında bunu ayrıştırmak için ben

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

olmasını isteyebilirsiniz Ya da daha iyi?

cevap

26

Elbette yapabilirsin.

Giriş noktası işlevinizde (çoğu durumda, __init__.py), yapılandırmanıza settings değişkeninde erişilebilir. senin .ini Örneğin

:

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

senin __init__.py yılında:

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 göre, request.registry.settings üzerinden bir görünüm işlevinde ayarlara erişebilirsiniz. Ayrıca, bildiğim kadarıyla, event.request.registry.settings üzerinden etkinlik abonelerinde olacak.

Başka bir dosya kullanma konusundaki sorunuzla ilgili olarak, yaptığınız gibi noktalı gösterimi kullanarak tüm yapılandırmanızı normal init dosyasına koymak iyi bir uygulama olduğundan eminim.