- en
- Language: ru
- Documentation version: 1.1.x
Настройка приложения¶
Приложение Flask - это экземпляр класса Flask
. Все, что касается приложения, например, конфигурация и URL, регистрируется в этом классе.
Самый простой способ создания приложения Flask - это создание глобального экземпляра Flask
непосредственно в верхней части кода, как в примере «Hello, World!» на предыдущей странице. Хотя этот способ прост и полезен в некоторых случаях, он может вызвать некоторые проблемы по мере роста проекта.
Вместо того чтобы создавать экземпляр Flask
глобально, вы будете создавать его внутри функции. Эта функция известна как фабрика приложений. Любая конфигурация, регистрация и другие настройки, необходимые приложению, будут происходить внутри функции, после чего приложение будет возвращено.
Фабрика приложений¶
Пришло время начать кодирование! Создайте каталог flaskr
и добавьте файл __init__.py
. Файл __init__.py
выполняет двойную функцию: он будет содержать фабрику приложения и сообщает Python, что каталог flaskr
следует рассматривать как пакет.
$ mkdir flaskr
import os
from flask import Flask
def create_app(test_config=None):
# create and configure the app
app = Flask(__name__, instance_relative_config=True)
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
)
if test_config is None:
# load the instance config, if it exists, when not testing
app.config.from_pyfile('config.py', silent=True)
else:
# load the test config if passed in
app.config.from_mapping(test_config)
# ensure the instance folder exists
try:
os.makedirs(app.instance_path)
except OSError:
pass
# a simple page that says hello
@app.route('/hello')
def hello():
return 'Hello, World!'
return app
create_app
- это фабричная функция приложения. Вы будете дополнять ее позже в учебнике, но она уже многое делает.
app = Flask(__name__, instance_relative_config=True)
создает экземплярFlask
.__name__
- это имя текущего модуля Python. Приложению необходимо знать, где он находится, чтобы установить некоторые пути, и__name__
- удобный способ сообщить ему об этом.instance_relative_config=True
сообщает приложению, что конфигурационные файлы находятся относительно папки instance folder. Папка экземпляра находится вне пакетаflaskr
и может содержать локальные данные, которые не должны быть зафиксированы в системе контроля версий, например, секреты конфигурации и файл базы данных.
app.config.from_mapping()
устанавливает некоторую конфигурацию по умолчанию, которую будет использовать приложение:SECRET_KEY
используется Flask и расширениями для обеспечения безопасности данных. Он установлен в'dev'
, чтобы обеспечить удобное значение во время разработки, но при развертывании его следует переопределить на случайное значение.DATABASE
- это путь, по которому будет сохранен файл базы данных SQLite. Он находится в каталогеapp.instance_path
, который является путем, выбранным Flask для папки экземпляра. Подробнее о базе данных вы узнаете в следующем разделе.
app.config.from_pyfile()
переопределяет конфигурацию по умолчанию значениями, взятыми из файлаconfig.py
в папке экземпляра, если он существует. Например, при развертывании это можно использовать для установки реальногоSECRET_KEY
.test_config
также можно передать фабрике, и она будет использоваться вместо конфигурации экземпляра. Это делается для того, чтобы тесты, которые вы будете писать позже в учебнике, могли быть настроены независимо от настроенных вами значений разработки.
os.makedirs()
гарантирует, чтоapp.instance_path
существует. Flask не создает папку экземпляра автоматически, но она должна быть создана, поскольку ваш проект будет создавать в ней файл базы данных SQLite.@app.route()
создает простой маршрут, чтобы вы могли увидеть работу приложения, прежде чем перейти к остальной части учебника. Он создает соединение между URL/hello
и функцией, которая возвращает ответ, в данном случае строку'Hello, World!'
.
Запустите приложение¶
Теперь вы можете запустить свое приложение с помощью команды flask
. В терминале укажите Flask, где найти ваше приложение, а затем запустите его в режиме разработки. Помните, что вы все еще должны находиться в каталоге верхнего уровня flask-tutorial
, а не в пакете flaskr
.
Режим разработки показывает интерактивный отладчик всякий раз, когда страница вызывает исключение, и перезапускает сервер всякий раз, когда вы вносите изменения в код. Вы можете оставить его запущенным и просто перезагружать страницу браузера, следуя учебнику.
Для Linux и Mac:
$ export FLASK_APP=flaskr
$ export FLASK_ENV=development
$ flask run
Для Windows cmd используйте set
вместо export
:
> set FLASK_APP=flaskr
> set FLASK_ENV=development
> flask run
Для Windows PowerShell используйте $env:
вместо export
:
> $env:FLASK_APP = "flaskr"
> $env:FLASK_ENV = "development"
> flask run
Вы увидите результат, похожий на этот:
* Serving Flask app "flaskr"
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 855-212-761
Зайдите на сайт http://127.0.0.1:5000/hello в браузере, и вы должны увидеть сообщение «Hello, World!». Поздравляем, теперь вы запустили свое веб-приложение Flask!
Продолжить Определение и доступ к базе данных.