Управление конфигурацией в Flask

FlaskFlaskBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе вы научитесь настраивать конфигурацию в приложении Flask. Конфигурация позволяет вам изменять настройки в вашем приложении в зависимости от различных окружений, например, включать или отключать режим отладки, настраивать секретные ключи и другие переменные, специфичные для окружения.

Примечание: вам нужно создать файл кода самостоятельно и запустить его в среде. Вы можете просмотреть статус сервиса Flask на Web 5000.

Создайте приложение Flask

Сначала создадим базовое приложение Flask. Создайте файл с именем app.py и добавьте следующий код:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, Flask!'

Для запуска приложения выполните следующую команду в терминале:

python app.py

Откройте веб-браузер и перейдите по адресу http://localhost:5000, чтобы увидеть сообщение "Hello, Flask!".

Основная конфигурация

Теперь добавим некоторую базовую конфигурацию в наше приложение Flask. В том же файле app.py добавьте следующий код:

app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'mysecretkey'

Конфигурация DEBUG включает режим отладки, который предоставляет полезные сообщения об ошибках в процессе разработки. Конфигурация SECRET_KEY используется для безопасной подписи сессионных файлов cookie и других целей, связанных с безопасностью.

Для доступа к значениям конфигурации вы можете использовать словарь app.config. Например, чтобы вывести значение SECRET_KEY, добавьте следующий код в маршрут hello:

@app.route('/')
def hello():
    secret_key = app.config['SECRET_KEY']
    return f'Hello, Flask! Secret Key: {secret_key}'

Перезапустите приложение Flask и перейдите по адресу http://localhost:5000, чтобы увидеть обновленное сообщение с секретным ключом.

Конфигурация из файлов

Загрузка конфигурационных значений непосредственно в код (hardcoding) не является идеальным решением, особенно в случае с чувствительными данными. Flask предоставляет способ загрузки конфигурации из отдельных файлов. Создайте новый файл с именем config.py и добавьте следующий код:

DEBUG = False
SECRET_KEY = 'myothersecretkey'

В файле app.py замените предыдущий код конфигурации на следующий:

app.config.from_object('config')

Метод from_object загружает конфигурацию из модуля config. Теперь значения DEBUG и SECRET_KEY будут загружены из файла config.py.

Перезапустите приложение Flask и перейдите по адресу http://localhost:5000, чтобы увидеть обновленное сообщение с новыми значениями конфигурации.

Конфигурация на основе окружения

Для различных окружений, таких как разработка, производство и тестирование, часто требуется различная конфигурация. Flask позволяет переключать конфигурацию на основе переменных окружения. Создайте новый файл с именем config_dev.py и добавьте следующий код:

DEBUG = True
SECRET_KEY = 'devsecretkey'

Создайте другой файл с именем config_prod.py с таким кодом:

DEBUG = False
SECRET_KEY = 'prodsecretkey'

В файле app.py замените предыдущий код конфигурации на следующий:

import os

if os.environ.get('FLASK_ENV') == 'production':
    app.config.from_object('config_prod')
else:
    app.config.from_object('config_dev')

Переменная окружения FLASK_ENV используется для определения окружения. Если она установлена в 'production', будет загружена конфигурация для производства; в противном случае будет загружена конфигурация для разработки.

Установите переменную окружения FLASK_ENV в 'production' и перезапустите приложение Flask. Перейдите по адресу http://localhost:5000, чтобы увидеть обновленное сообщение с значениями конфигурации для производства.

Папка с экземпляром

Flask предоставляет папку с экземпляром для хранения конфигурационных файлов, специфичных для определенной развертки. Это позволяет отделить конфигурации, специфичные для развертки, от остальной части кода. По умолчанию Flask использует папку с именем instance в том же каталоге, что и ваше приложение.

Создайте новую папку с именем instance в том же каталоге, что и файл app.py. В папке instance создайте файл с именем config.cfg и добавьте следующий код:

DEBUG = True
SECRET_KEY = 'instancekey'

В файле app.py добавьте следующий код перед кодом конфигурации:

app.instance_path = os.path.abspath(os.path.dirname(__file__))
app.config.from_pyfile('config.cfg')

instance_path устанавливается в абсолютный путь к папке instance. Метод from_pyfile загружает конфигурацию из файла config.cfg в папке с экземпляром.

Перезапустите приложение Flask и перейдите по адресу http://localhost:5000, чтобы увидеть обновленное сообщение с значениями конфигурации экземпляра.

Резюме

В этом практическом занятии вы узнали, как обрабатывать конфигурацию в приложении Flask. Вы узнали, как задавать базовые значения конфигурации, загружать конфигурацию из файлов, переключать конфигурацию на основе переменных окружения и использовать папку с экземпляром для конфигураций, специфичных для развертки. Конфигурация является важной аспектом создания надежных и гибких приложений на Flask.