2015-10-09 64 views
1

我是新瓶,我在config.py文件三個部分更改配置設置基於URL的瓶

class Config(object): DEBUG = False TESTING = False DATABASE_URI = 'sqlite://:memory:' class ProductionConfig(Config): DATABASE_URI = 'mysql://[email protected]/foo' class DevelopmentConfig(Config): DEBUG = True class TestingConfig(Config): TESTING = True

而且按照documentation我們可以在同一時間通過一個配置並運行該應用程序,以便該應用程序僅運行傳遞的配置設置。

我期待基於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)

運行應用程序時可能,我想根據url模式更改配置,這樣我就不必在時間運行多個應用程序實例。 請指導我如何捕捉中間件中的URL模式來更改配置文件。

+0

我會建議不要這樣做。我認爲這是爲應用程序和其他一些不好的事情添加一些不必要的複雜性。在測試vs運行生產時,您的應用程序將會執行一些非常不同的事情。簡單勝於複雜。 – m1yag1

回答

0

你可以做到這一點的路線終點

app.config['DEBUG'] = True 

內,但它會影響整個應用程序的對象。所以當你GET/api/app_dev/hello然後/ api/app/whatever;你仍然在使用app_dev配置。

1

這聽起來像你可能會尋找是application dispatching,其中每個應用程序是,除了加載的配置文件是相同的。

here是一個非常類似的問題的解決方案,除了它使用子域調度,而不是你所請求的URL調度。

的基本概念應適用,並在第一個鏈接的例子服用此一併應該給你一個良好的開端,制定適合您的需要的代碼。

0

在配置文件中可以設置API _PATH。並在藍圖中,您需要爲所需的API設置此參數