Pylons config在websetup.py中有不同的内容

时间:2010-11-08 16:50:18

标签: python sqlalchemy pylons

在我的pylons应用程序中,我想在设置中添加一些数据。 (用户)

为了保护数据库中的密码,我使用salt对密码进行了哈希处理,这个盐存储在配置文件中。

如果我想从配置中获取saltkey,我会这样做(缩短示例):

from pylons import config

saltkey = config.get("saltkey")

如果此代码放在例如模型中,则返回saltkey。在用户模型中,此代码用于使用salt创建哈希。

但是,如果我想在“websetup.py”中创建此模型的实例,则配置具有不同的内容,并且无法检索saltkey(导致错误)

def setup_app(command, conf, vars):
   load_environment(conf.global_conf, conf.local_conf)

   Base.metadata.create_all(bind=Session.bind)

   user = User('admin', 'password123', 'test@test.com')
   Session.add(user)
   Session.commit()

我的问题是:为什么配置内容不同?如何在没有丑陋黑客的情况下解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以在此步骤中访问配置文件。 from pylons import config方法最适合在WSGI请求的上下文中执行此操作。但是,您没有处理WSGI请求,因此它不可用。幸运的是,在websetup.py的操作过程中,您可以非常轻松地访问配置。 setup_app()函数已经使用了配置文件,Paster已经解析了它并将其转换为字典。

您可以将您的配置文件作为conf.local_conf字典访问,这将使您想要的数据可用。

所有这些 - 你不应该将salt存储在config.ini文件that's a bad idea and you should avoid wheel-reinvention like that中。