- Flask Framework Cookbook
- Shalabh Aggarwal
- 302字
- 2021-08-05 17:17:20
Class-based settings
An interesting way of laying out configurations for different deployment modes, such as production, testing, staging, and so on, can be cleanly done using the inheritance pattern of classes. As the project gets bigger, you can have different deployment modes such as development, staging, production, and so on, where each mode can have several different configuration settings, and some settings will remain the same.
How to do it…
We can have a default setting base class, and other classes can inherit this base class and override or add deployment-specific configuration variables.
The following is an example of our default setting base class:
class BaseConfig(object): 'Base config class' SECRET_KEY = 'A random secret key' DEBUG = True TESTING = False NEW_CONFIG_VARIABLE = 'my value' class ProductionConfig(BaseConfig): 'Production specific config' DEBUG = False SECRET_KEY = open('/path/to/secret/file').read() class StagingConfig(BaseConfig): 'Staging specific config' DEBUG = True class DevelopmentConfig(BaseConfig): 'Development environment specific config' DEBUG = True TESTING = True SECRET_KEY = 'Another random secret key'
Tip
The secret key is stored in a separate file because, for security concerns, it should not be a part of your version-control system. This should be kept in the local filesystem on the machine itself, whether it is your personal machine or a server.
How it works…
Now, we can use any of the preceding classes while loading the application's configuration via from_object()
. Let's say that we save the preceding class-based configuration in a file named configuration.py
:
app.config.from_object('configuration.DevelopmentConfig')
So, overall, this makes the management of configurations for different deployment environments flexible and easier.
Tip
Downloading the example code
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
- 玩轉Scratch少兒趣味編程
- Python程序設計教程(第2版)
- Learning C# by Developing Games with Unity 2020
- C語言程序設計立體化案例教程
- Microsoft Dynamics GP 2013 Reporting, Second Edition
- 飛槳PaddlePaddle深度學習實戰
- 蘋果的產品設計之道:創建優秀產品、服務和用戶體驗的七個原則
- OpenCV 4計算機視覺項目實戰(原書第2版)
- 深入剖析Java虛擬機:源碼剖析與實例詳解(基礎卷)
- JavaScript腳本特效編程給力起飛
- Learning AWS
- Hands-On Full Stack Development with Spring Boot 2.0 and React
- Spring MVC Blueprints
- Django 3 Web Development Cookbook
- JSP大學實用教程