【问题标题】:web2py application configuration fileweb2py 应用程序配置文件
【发布时间】:2013-08-18 19:23:11
【问题描述】:

是否有存储 web2py 应用程序配置设置的好方法?

我编写了一个小应用程序,其中包含一个从 LDAP 查找用户属性(姓名、电子邮件地址等)的脚本。我们的公司 LDAP 服务器需要绑定,然后才能搜索用户详细信息。

我想从 GitHub 存储库共享我的应用程序,但在我删除用于绑定的凭据之前。

来自 .Net 背景,我习惯于将这样的配置放入 app|web.config 文件中。但是这个 seems to be frowned on 在 web2py 中。

什么是 Pythonic 或 web2pyonic 方式?

def user_info(username):
    #todo: move these parameters to config
    ldap_host = 'example.com'
    ldap_port = 389
    ldap_base_dn = 'OU=DK,DC=example,DC=com'
    ldap_bind_dn = 'CN=<removed>,OU=DK,DC=example,DC=com'
    ldap_bind_pw = '<removed>'
    ldap_attr_uid = 'sAMAccountName'
    ldap_attr_forename = 'givenName'
    ldap_attr_surname = 'sn'
    ldap_attr_display_name = 'displayName'
    ldap_attr_department = 'department'
    ldap_attr_employee_type = 'employeeType'
    ldap_attr_email = 'mail'

    l = ldap.initialize('ldap://%s:%s' % (ldap_host, ldap_port))
    l.simple_bind_s(ldap_bind_dn, ldap_bind_pw)
    r = l.search_s(base=ldap_base_dn,
                   scope=ldap.SCOPE_SUBTREE,
                   filterstr='(%s=%s)' % (ldap_attr_uid, username),
                   attrlist=[
                       ldap_attr_forename,
                       ldap_attr_surname,
                       ldap_attr_email,
                       ldap_attr_display_name,
                       ldap_attr_employee_type,
                       ldap_attr_department])
    if r:
        dn, e = r[0]
        return {
            'dn': dn,
            'forename': e[ldap_attr_forename][0],
            'surname': e[ldap_attr_surname][0],
            'email': e[ldap_attr_email][0],
            'display_name': e[ldap_attr_display_name][0],
            'department': e[ldap_attr_department][0],
            'employee_type': e[ldap_attr_employee_type][0]}
    return None

【问题讨论】:

标签: python configuration ldap web2py


【解决方案1】:

有不同的选项,但一种方法是将设置放入模块并导入。在/yourapp/modules/ldap_settings.py:

ldap_host = 'example.com'
ldap_port = 389
...

然后在你的函数中:

def user_info(username):
    from ldap_settings import *
    ...

【讨论】:

  • 谢谢,这似乎是最实用的解决方案。我最终得到了类似于@will-hart 的linked 建议的东西,它允许我使用未版本化的文件覆盖设置。
【解决方案2】:

我相信正确的 web2py 方法是使用 AppConfig 模块。在此处的 web2py 参考手册中查看它: http://web2py.com/books/default/chapter/29/13/deployment-recipes#AppConfig-module

【讨论】:

    【解决方案3】:

    正如 Keht 所说,AppConfig 是正确的做法。 ini 文件存在于私人文件夹中。您可以看到默认的电子邮件 smtp 设置已经存在,web2py 使用这些设置来发送用户验证电子邮件/忘记密码电子邮件。

    您可以在此处输入所需的键值,然后创建 AppConfig 对象并读取所需的键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2013-04-15
      • 2013-12-11
      • 2014-10-14
      • 1970-01-01
      • 2022-11-03
      • 2010-09-05
      相关资源
      最近更新 更多