Flask settings extension is similar to Django settings.
Project description
# flask-settings
Flask settings extension is similar to Django settings.
[](https://travis-ci.org/left-join/flask-settings)
[](https://coveralls.io/github/left-join/flask-settings?branch=master)
[](https://landscape.io/github/left-join/flask-settings/master)
# Installation
```bash
pip install flask-settings
```
# How to use
File app/settings/default.py
```python
from flask_settings import BasicConfig
class DefaultConfig(BasicConfig):
SQLALCHEMY_DATABASE_PROTOCOL = 'postgresql'
SQLALCHEMY_DATABASE_HOST = 'localhost'
SQLALCHEMY_DATABASE_PORT = 5432
SQLALCHEMY_DATABASE_USERNAME = 'postgres'
SQLALCHEMY_DATABASE_PASSWORD = 'postgres'
SQLALCHEMY_DATABASE_NAME = 'default'
@property
def SQLALCHEMY_DATABASE_URI(self):
# calculated constant
return '{protocol}://{username}:{password}@{host}:{port}/{db}'.format(
protocol=self.SQLALCHEMY_DATABASE_PROTOCOL,
username=self.SQLALCHEMY_DATABASE_USERNAME,
password=self.SQLALCHEMY_DATABASE_PASSWORD,
host=self.SQLALCHEMY_DATABASE_HOST,
port=self.SQLALCHEMY_DATABASE_PORT,
db=self.SQLALCHEMY_DATABASE_NAME)
```
File app/settings/development.py
```python
from app.settings.default import DefaultConfig
class DevelopmentConfig(DefaultConfig):
DEBUG = True
SQLALCHEMY_DATABASE_NAME = 'development'
```
File app/settings/testing.py
```python
from app.settings.default import DefaultConfig
class TestingConfig(DefaultConfig):
TESTING = True
SQLALCHEMY_DATABASE_NAME = 'testing'
```
File app/settings/production.py
```python
from app.settings.default import DefaultConfig
class ProductionConfig(DefaultConfig):
SQLALCHEMY_DATABASE_HOST = '10.0.0.1'
SQLALCHEMY_DATABASE_USERNAME = 'user'
SQLALCHEMY_DATABASE_PASSWORD = 'password'
SQLALCHEMY_DATABASE_NAME = 'production'
```
File app/application.py
```python
from flask import Flask
from flask_settings import Settings
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
settings = Settings(app)
db = SQLAlchemy(app)
db.create_all(app=app)
@app.route('/')
def index_page():
return 'database name: ' + settings.SQLALCHEMY_DATABASE_NAME
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
```
The global settings variable can be used in any module with application context:
```
from flask import Blueprint
from flask_settings.globals import settings
bp = Blueprint(__name__, __name__)
@bp.route('/')
def index_page():
return 'database name: ' + settings.SQLALCHEMY_DATABASE_NAME
```
Run application in development mode:
```bash
FLASK_SETTINGS="development" python app/application.py
```
Run application tests in testing mode:
```bash
FLASK_SETTINGS="testing" nosetests
```
Run application in production mode:
```bash
FLASK_SETTINGS="production" uwsgi --wsgi-file=app/application.py --callable=app --http=0.0.0.0:5000
```
Flask settings extension is similar to Django settings.
[](https://travis-ci.org/left-join/flask-settings)
[](https://coveralls.io/github/left-join/flask-settings?branch=master)
[](https://landscape.io/github/left-join/flask-settings/master)
# Installation
```bash
pip install flask-settings
```
# How to use
File app/settings/default.py
```python
from flask_settings import BasicConfig
class DefaultConfig(BasicConfig):
SQLALCHEMY_DATABASE_PROTOCOL = 'postgresql'
SQLALCHEMY_DATABASE_HOST = 'localhost'
SQLALCHEMY_DATABASE_PORT = 5432
SQLALCHEMY_DATABASE_USERNAME = 'postgres'
SQLALCHEMY_DATABASE_PASSWORD = 'postgres'
SQLALCHEMY_DATABASE_NAME = 'default'
@property
def SQLALCHEMY_DATABASE_URI(self):
# calculated constant
return '{protocol}://{username}:{password}@{host}:{port}/{db}'.format(
protocol=self.SQLALCHEMY_DATABASE_PROTOCOL,
username=self.SQLALCHEMY_DATABASE_USERNAME,
password=self.SQLALCHEMY_DATABASE_PASSWORD,
host=self.SQLALCHEMY_DATABASE_HOST,
port=self.SQLALCHEMY_DATABASE_PORT,
db=self.SQLALCHEMY_DATABASE_NAME)
```
File app/settings/development.py
```python
from app.settings.default import DefaultConfig
class DevelopmentConfig(DefaultConfig):
DEBUG = True
SQLALCHEMY_DATABASE_NAME = 'development'
```
File app/settings/testing.py
```python
from app.settings.default import DefaultConfig
class TestingConfig(DefaultConfig):
TESTING = True
SQLALCHEMY_DATABASE_NAME = 'testing'
```
File app/settings/production.py
```python
from app.settings.default import DefaultConfig
class ProductionConfig(DefaultConfig):
SQLALCHEMY_DATABASE_HOST = '10.0.0.1'
SQLALCHEMY_DATABASE_USERNAME = 'user'
SQLALCHEMY_DATABASE_PASSWORD = 'password'
SQLALCHEMY_DATABASE_NAME = 'production'
```
File app/application.py
```python
from flask import Flask
from flask_settings import Settings
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
settings = Settings(app)
db = SQLAlchemy(app)
db.create_all(app=app)
@app.route('/')
def index_page():
return 'database name: ' + settings.SQLALCHEMY_DATABASE_NAME
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
```
The global settings variable can be used in any module with application context:
```
from flask import Blueprint
from flask_settings.globals import settings
bp = Blueprint(__name__, __name__)
@bp.route('/')
def index_page():
return 'database name: ' + settings.SQLALCHEMY_DATABASE_NAME
```
Run application in development mode:
```bash
FLASK_SETTINGS="development" python app/application.py
```
Run application tests in testing mode:
```bash
FLASK_SETTINGS="testing" nosetests
```
Run application in production mode:
```bash
FLASK_SETTINGS="production" uwsgi --wsgi-file=app/application.py --callable=app --http=0.0.0.0:5000
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Flask-Settings-0.0.3.tar.gz
(3.9 kB
view hashes)
Built Distributions
Close
Hashes for Flask_Settings-0.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7236475d6ef5683f839f98303c740becd29e6e8ec49d56e64d7783f367bcaf0 |
|
MD5 | 879ff91e340b449a2a1de842bd5ff85a |
|
BLAKE2b-256 | 50ff04f66400a56cbfcbeb249c1a61988fa858218566d94f946e0ac4be0f100a |
Close
Hashes for Flask_Settings-0.0.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 673f6242688bd7066961faa6900b5eb7fe656a89094f753bc58ad0c7170469de |
|
MD5 | 390d5954298f22da1e94692f47c5841e |
|
BLAKE2b-256 | ac0b4807a230d6aecbb6ebe5207fb974317b04f15502d7c6209a097ef416beae |