Введение
В этом лабе вы научитесь настраивать конфигурацию в приложении 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.