Я работаю над изучением Pyramid и пытаюсь использовать пользовательскую конфигурацию из моего файла development.ini в одном из моих представлений.В этом примере "ldap_server".
development.ini:
[app:main]
use = egg:myapp
pyramid.reload_templates = true
pyramid.includes =
pyramid_debugtoolbar
ldap_server = 10.10.10.10
[server:main]
use = egg:waitress#main
listen = 0.0.0.0:6543
Я могу получить доступ к значению "ldap_server" из моей основной функции в myapp/__init__.py
,(В приведенном ниже примере будет напечатано «Сервер ldap 10.10.10.10» при запуске через pserve development.ini
.)
from pyramid.config import Configurator
def main(global_config, **settings):
config = Configurator(settings=settings)
config.include('pyramid_jinja2')
config.include('.routes')
config.add_static_view(name='static', path='myapp:static')
config.scan('.views')
config.scan('.templates')
ldap_server = settings.get('ldap_server')
print('The ldap server is ' + ldap_server)
return config.make_wsgi_app()
Тем не менее, я хочу использовать это значение в одном из моих представлений.Я изо всех сил пытаюсь найти документацию о том, как это сделать.Я прочитал пару документов, но все еще пытаюсь понять это.
Документы:
https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html#adding-a-custom-setting
В частности, я пытаюсь понять, какую пирамидуфункции для импорта, на мой взгляд, и как получить доступ к значению 'ldap_server', которое я определил в development.ini.
Вот текущий фрагмент из myapp / views / login.py:
from pyramid.view import view_config, view_defaults
import ldap
@view_defaults(renderer='../templates/login.jinja2')
class TutorialViews(object):
def __init__(self, request):
self.request = request
self.view_name = 'login'
@view_config(route_name='login')
def login_page(self):
ldap_server = [ get value from development.ini ]
do ldappy stuff...
Я искал часы и не могу понять, как это сделать.Кажется, это было бы тривиально.Если бы кто-то мог дать мне пример того, как это сделать, или указать на некоторые документы, которые предоставляют примеры, я был бы чрезвычайно благодарен.
ОБНОВЛЕНИЕ:
Ниже приведено рабочее решение (login.py), на случай, если кто-то вроде меня (новичок в Pyramid) столкнется с этим позже.Всего одна линия изменений.Спасибо Сергею за объяснение в ответе ниже.
from pyramid.view import view_config, view_defaults
import ldap
@view_defaults(renderer='../templates/login.jinja2')
class TutorialViews(object):
def __init__(self, request):
self.request = request
self.view_name = 'login'
@view_config(route_name='login')
def login_page(self):
ldap_server = self.request.registry.settings['ldap_server']
do ldappy stuff...