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

Каждое приложение 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

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

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

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

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