Flask — конфигурационные файлы

Admin Flask

Один из способов использования различных конфигураций настроек сервера для Flask.

С советами в официальной части можно ознакомиться здесь.

В официальной инструкции, помимо прочего, дают рекомендации делать через смену конфигураций:

def create_app():
    app = Flask(__name__)

    # app.config.from_object('config.DevelopmentConfig')
    app.config.from_object('config.ProductionConfig')

    return app

Минус такого подхода в заливке. Перед отправкой изменений на сервер придется постоянно комментировать/раскомментировать код.

Для себя нашел другой способ более удобным.

def create_app():
    app = Flask(__name__)

    app.config.from_object(Config)
    app.config.from_pyfile('../config-extended.py')

    return app

ploshadka.net/config.py — этот файл нужно создать самостоятельно на сервере, потому что там важная секретная информация. И такой же создаем у себя на локальном компьютере. А если нужно, также и на тестовом.

ploshadka.net/config-extended.py — этот файл будет у нас отправляться в git и здесь ничего важного с точки зрения безопасности.

Теперь в зависимости от нахождения кода будет подтягиваться разная конфигурация сервера.

Содержимое файла config.py может быть таким:

import os

class Config(object):
    DEBUG = True
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'fsdkfd32r234fsdf'
    SQLALCHEMY_DATABASE_URI = 'postgresql://localhost/db_name'

    ################
    # Flask-Security
    ################

    SECURITY_PASSWORD_HASH = "pbkdf2_sha512"
    SECURITY_PASSWORD_SALT = "fsdfdfsdfdfsdafds"

На сервере тот же файл:

import os

class Config(object):
    DEBUG = False
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'fsDFKsmf923jnagd'
    SQLALCHEMY_DATABASE_URI = 'postgresql://user:pass/db_name'
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    ################
    # Flask-Security
    ################

    SECURITY_PASSWORD_HASH = "pbkdf2_sha512"
    SECURITY_PASSWORD_SALT = "fsdfk3fsdDFFdfsr0fsa"

Следует отметить, что такие данные как SECRET_KEY, SECURITY_PASSWORD_SALT или другие подобные можно еще более безопасно хранить в переменных окружения. Но это тема отдельной статьи и тут разбираться не будет.

Содержимое файла config-extended.py может быть таким:

SQLALCHEMY_TRACK_MODIFICATIONS = False


################
# Flask-Security
################

# URLs
SECURITY_URL_PREFIX = "/admin"
SECURITY_LOGIN_URL = "/login/"
SECURITY_LOGOUT_URL = "/logout/"
SECURITY_POST_LOGIN_VIEW = "/admin/"
SECURITY_POST_LOGOUT_VIEW = "/admin/"
SECURITY_POST_REGISTER_VIEW = "/admin/"

# Включает регистрацию
SECURITY_REGISTERABLE = True
SECURITY_REGISTER_URL = "/register/"
SECURITY_SEND_REGISTER_EMAIL = False

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Flask — конфигурационные файлы"