我正在学习 Pyramid,并且我正在尝试在我的视图之一中使用我的 development.ini 文件中的自定义配置。 在此示例中为“ldap_server”。
开发.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
我发现我可以从
myapp/__init__.py
的主函数中访问“ldap_server”的值。 (下面的示例将在启动时通过 pserve development.ini
打印“The ldap server is 10.10.10.10”。)
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()
也就是说,我想在我的观点之一中使用这个值。 我正在努力寻找有关如何执行此操作的文档。 我已经阅读了一些文档,但我仍然很难理解这一点。
文档:
具体来说,我试图了解在我的视图中要导入哪些金字塔函数,以及如何访问我在文件development.ini中定义的“ldap_server”值。
这是 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),例如,对于金字塔新手来说。这只是一行的变化。 感谢谢尔盖在下面的答案中的解释。
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...
我认为你应该能够通过
request.registry.settings
访问它:
如果传递了settings参数,它应该是一个Python字典 表示此应用程序的部署设置。这些都是 稍后可使用 Pyramid.registry.Registry.settings 检索 属性(又名 request.registry.settings)。
https://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html