web2py 应用程序配置文件

3
有没有一种好的方法来存储web2py应用程序的配置设置?
我写了一个小应用程序,其中包括一个脚本,从LDAP查找用户属性(姓名、电子邮件地址等)。我们的公司LDAP服务器在允许搜索用户详细信息之前需要进行绑定。
我想从GitHub存储库共享我的应用程序,但不希望在共享之前删除用于绑定的凭据。
来自.NET背景,我习惯于将这样的配置放入app|web.config文件中。但是,在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

我对web2py不是非常熟悉,但在Django中可以通过使用一个单独的、无版本控制的local_settings.py文件来实现这个功能 - 例如:https://dev59.com/r2445IYBdhLWcg3wWI6L。 - undefined
3个回答

3

2

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

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

然后在你的函数中:

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

谢谢,看起来这是最实际的解决方案。我最终得到了与@will-hart的建议类似的东西,可以让我用一个非版本化的文件来覆盖设置。 - undefined

0
如Keht所提到的,AppConfig是正确的方法。ini文件位于私有文件夹中。您可以看到默认的电子邮件smtp设置已经存在,这些设置由web2py用于发送用户验证电子邮件/忘记密码电子邮件。
您可以在此处添加所需的键值对,并创建AppConfig对象并读取所需的键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接