Конфигурация пирамиды и .ini - PullRequest
       40

Конфигурация пирамиды и .ini

15 голосов
/ 27 сентября 2011

Каждое приложение Pyramid имеет связанный 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-файл и анализировать его при запуске?

1 Ответ

27 голосов
/ 28 сентября 2011

Конечно, вы можете.

В вашей функции точки входа (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()

В соответствии с последней документацией по пирамиде , вы можете получить доступ к настройкам в функции просмотра через request.registry.settings. Также, насколько я знаю, это будет в подписчиках событий через event.request.registry.settings.

Что касается вашего вопроса об использовании другого файла, я уверен, что хорошей практикой будет поместить все ваши настройки в обычный файл инициализации, используя точечные обозначения, как вы сделали.

...