我正在学习金字塔,并且试图在我的一种视图中使用来自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
我发现我可以从myapp/__init__.py
的主要函数中访问“ ldap_server”的值。 (以下示例在通过pserve development.ini
启动时将显示“ ldap服务器为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),以防万一像我这样的人(金字塔的新手)稍后遇到此问题。只需一行更改。感谢谢尔盖(Sergey)在下面的答案中的解释。
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...
答案 0 :(得分:1)
我认为您应该可以通过request.registry.settings
来访问它:
如果传递了settings参数,则它应该是Python字典 代表此应用程序的部署设置。这些是 以后可以使用pyramid.registry.Registry.settings检索 属性(又称为request.registry.settings)。
https://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html