forked from orbit-oss/flask
document that Config.from_object uses object as-is
This commit is contained in:
parent
ff56126a45
commit
830c77cb44
2 changed files with 42 additions and 0 deletions
|
|
@ -553,6 +553,44 @@ To enable such a config you just have to call into
|
||||||
|
|
||||||
app.config.from_object('configmodule.ProductionConfig')
|
app.config.from_object('configmodule.ProductionConfig')
|
||||||
|
|
||||||
|
Note that :meth:`~flask.Config.from_object` does not instantiate the class
|
||||||
|
object. If you need to instantiate the class, such as to access a property,
|
||||||
|
then you must do so before calling :meth:`~flask.Config.from_object`::
|
||||||
|
|
||||||
|
from configmodule import ProductionConfig
|
||||||
|
app.config.from_object(ProductionConfig())
|
||||||
|
|
||||||
|
# Alternatively, import via string:
|
||||||
|
from werkzeug.utils import import_string
|
||||||
|
cfg = import_string('configmodule.ProductionConfig')()
|
||||||
|
app.config.from_object(cfg)
|
||||||
|
|
||||||
|
Instantiating the configutation object allows you to use ``@property`` in
|
||||||
|
your configuration classes::
|
||||||
|
|
||||||
|
class Config(object):
|
||||||
|
"""Base config, uses staging database server."""
|
||||||
|
DEBUG = False
|
||||||
|
TESTING = False
|
||||||
|
DB_SERVER = '192.168.1.56'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def DATABASE_URI(self): # Note: all caps
|
||||||
|
return 'mysql://user@{}/foo'.format(self.DB_SERVER)
|
||||||
|
|
||||||
|
class ProductionConfig(Config):
|
||||||
|
"""Uses production database server."""
|
||||||
|
DB_SERVER = '192.168.19.32'
|
||||||
|
|
||||||
|
class DevelopmentConfig(Config):
|
||||||
|
DB_SERVER = 'localhost'
|
||||||
|
DEBUG = True
|
||||||
|
|
||||||
|
class TestingConfig(Config):
|
||||||
|
DB_SERVER = 'localhost'
|
||||||
|
DEBUG = True
|
||||||
|
DATABASE_URI = 'sqlite:///:memory:'
|
||||||
|
|
||||||
There are many different ways and it's up to you how you want to manage
|
There are many different ways and it's up to you how you want to manage
|
||||||
your configuration files. However here a list of good recommendations:
|
your configuration files. However here a list of good recommendations:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,10 @@ class Config(dict):
|
||||||
from yourapplication import default_config
|
from yourapplication import default_config
|
||||||
app.config.from_object(default_config)
|
app.config.from_object(default_config)
|
||||||
|
|
||||||
|
Nothing is done to the object before loading. If the object is a
|
||||||
|
class and has ``@property`` attributes, it needs to be
|
||||||
|
instantiated before being passed to this method.
|
||||||
|
|
||||||
You should not use this function to load the actual configuration but
|
You should not use this function to load the actual configuration but
|
||||||
rather configuration defaults. The actual config should be loaded
|
rather configuration defaults. The actual config should be loaded
|
||||||
with :meth:`from_pyfile` and ideally from a location not within the
|
with :meth:`from_pyfile` and ideally from a location not within the
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue