在金字塔视图中使用自定义配置

问题描述 投票:0回答:1

我正在学习 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()

也就是说,我想在我的观点之一中使用这个值。 我正在努力寻找有关如何执行此操作的文档。 我已经阅读了一些文档,但我仍然很难理解这一点。

文档:

环境变量和.ini文件设置,添加自定义设置

具体来说,我试图了解在我的视图中要导入哪些金字塔函数,以及如何访问我在文件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...
configuration pyramid
1个回答
2
投票

我认为你应该能够通过

request.registry.settings
访问它:

如果传递了settings参数,它应该是一个Python字典 表示此应用程序的部署设置。这些都是 稍后可使用 Pyramid.registry.Registry.settings 检索 属性(又名 request.registry.settings)。

https://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html

© www.soinside.com 2019 - 2024. All rights reserved.