根据Flask中的URL更改配置设置

时间:2015-10-09 11:23:39

标签: python-2.7 flask

我是Flask的新手,我在config.py文件中有三个部分

class Config(object): DEBUG = False TESTING = False DATABASE_URI = 'sqlite://:memory:' class ProductionConfig(Config): DATABASE_URI = 'mysql://user@localhost/foo' class DevelopmentConfig(Config): DEBUG = True class TestingConfig(Config): TESTING = True

根据documentation,我们可以一次传递一个配置并运行应用程序,以便应用程序仅针对传递的配置设置运行。

我正在寻找基于url模式的配置,

所以说如果url是:

http://127.0.0.1:8080/api/app/hello应使用

app.config.from_object(ProductionConfig)

http://127.0.0.1:8080/api/app_dev/hello应使用

app.config.from_object(DevelopmentConfig)

http://127.0.0.1:8080/api/app_test/hello应使用

app.config.from_object(TestingConfig)

在运行app时是否有可能我想根据url模式更改配置,以便我不必在时间运行多个app实例。 请指导我如何捕获中间件中的url模式以更改配置文件。

3 个答案:

答案 0 :(得分:1)

听起来你可能正在寻找的是application dispatching,除了加载的配置文件外,每个应用程序都是相同的。

here是针对非常类似问题的解决方案,除了它使用子域调度而不是您请求的URL调度。

基本概念应该适用,并将其与第一个链接中的示例结合使用,可以为您开发适合您需求的代码提供良好的开端。

答案 1 :(得分:0)

您可以在路径端点

中执行此操作
app.config['DEBUG'] = True

但它会影响整个app对象。所以,当你GET / api / app_dev / hello然后/ api / app / whatever;你还在使用app_dev配置。

答案 2 :(得分:0)

在配置文件中,您可以设置API _路径。在蓝图中,您需要为所需的API设置此参数