Найти в Дзене
Юрий Ершов

Создаем первое Flask-приложение

После создания виртуальной среды и установки в ней фреймворка Flask (см. статью "Установка микрофреймворка Flask в ОС Windows" - адрес: https://zen.yandex.ru/media/id/5f48769bdca1b328cd7c262e/ustanovka-mikrofreimvorka-flask-v-os-windows-7-614fe064fea3550f883d6a36 ) в папке виртуальной среды появятся папки и файлы, образующие структуру приложения. Рассмотрим их.

В нашем простейшем минимальном приложении, которое мы назвали - first_flask_app, после генерирования виртуальной среды, в ее папке my_flask_env автоматически создаются папки: Lib, Scripts и файл конфигурации pyvenv.cfg.

/first_flask_app

-/my_flask_env

- /Lib

- /Scripts

- pyvenv.cfg

В папке Lib расположены библиотеки, которые используются на сервере во время развертывания, папка Scripts содержит копии Python, pip и Flask, а также данные об активации и деактивации виртуальной среды.

Строгих правил для структуры Flask-приложения нет, и она может включать в себя разные комбинации файлов и папок, но папки static и templates должны присутствовать в любом приложении. Папка static содержит файлы и папки, которые в приложении не изменяются или изменяются редко. Например, папка css c таблицами стилей для приложения, и папка images c картинками приложения. Папка templates содержит шаблоны с расширениями .html. Flask-приложение ищет соответствующие файлы в этих папках по умолчанию. Папки static и templates создаются разработчиком самостоятельно.

Также самостоятельно создается главный файл приложения app.py, которым приложение запускается.

В результате получаем примерно такую структуру нашего приложения.

/first_flask_app

/my_flask_env

- /Lib

- /Scripts

- /sources

- /static

- /css

- /images

- /js

- /templates

- index.html

- page_2.html

- page_3.html

………………………

- app.py

- pyvenv.cfg

Ну и создадим файл app.py. Как уже говорилось, он будет находится в виртуальной среде my_flask_env. Если создавать файл в терминале (чтобы не "прыгать " по разным окнам), в командной строке пишем следующий код:

NUL > app.py

Затем открываем этот файл в своем текстовом редакторе и вводим следующий код:

app.py

from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

return 'Hello, Flask!'

if __name__ == '__main__':

app.run(debug=True)

Первая строка - from flask import Flask - загружает класс Flask. Он представляет собой WSGI-приложение и является центральным объектом в приложении. WSGI (Web-Server Gateway Interface) - это стандарт интерфейса веб-сервера Python, определенный в PEP 333. Можно думать об WSGI, как об установщике поведения и методов, которые когда выполняются, позволяют Web-приложению работать с большим количеством Web серверов. Flask управляет всеми деталями, поэтому можно сосредоточиться на написании приложения, не отвлекаясь на эти детали.

app = Flask(__name__)

В этой строке создается экземпляр приложения в переменной app с именем нашего модуля. Переменная app, может быть любой, однако, название app - принято по всеобщему соглашению для большинства Flask-приложений. Мы ссылаемся на имя текущего модуля __name__, так что приложение может найти требуемые ресурсы, внутри текущей папки. Это будет важно позже, если мы будем изменять шаблоны или обрабатывать статические файлы.

В следующей строке кода - @app.route - это Python декоратор из переменной app, определенной выше. Этот декоратор оборачивает функцию представления index(), чтобы направлять запросы для определенного URL-адреса на конкретное представление. Index выбран, как имя для функции, традиционно представляющей первую страницу приложения, которую использует сервер.

В строках:

def index():

return 'Hello, Flask!'

мы инструктируем наше приложение о всех запросах от слэша - корневого URL - для функции представления index(). Index() – это просто функция, которая возвращает какой-то ответ. Когда мы открываем браузер, и набираем корневой URL нашего приложения, Flask вызывает функцию представления и отправляет значение return в браузер.

У функции Index() нет аргументов. Она возвращает объект простой строки.

Рассмотрим следующие строки:

if __name__ == '__main__':

app.run(debug=True)

В них выполняется наше приложение с использованием внутреннего сервера разработки в режиме отладки (debug=True). Инструкция if запускает сервер только в том случае, если мы запускаем наше приложение из командной строки командой - python app.py. В случае, когда приложение импортируется из другого файла, как это делается на рабочем сервере, отладочный сервер не запустится.

В режиме отладки в браузере и в терминале выдается подробная отладочная информация от ошибках. Поэтому после завершения отладки нужно поменять значение - debug c True (debug=True) на False (debug=False), чтобы отладочная информация не выводилась.

После того, как код написан и всячески проверен, возвращаемся в командную строку. Выходим из интерпретатора Python обратно в виртуальную среду my_flask_env при помощи команды - exit() или Ctrl-Z + Return.

Дальше - самое интересное - запускаем файл app.py стандартной командой - python app.py:

(my_flask_env)c:\My_flask\first_flask_app\my_flask_env>python app.py

В результате в терминале должны появиться строчки, среди которых:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Если она есть, значит - локальный сервер работает...

ВСЁ! Запускаем браузер по адресу локального хоста 127.0.0.1, используя порт по умолчанию – 5000-ный. Номер порта можно переопределить, если он уже используется другим приложением.

После перехода по этой ссылке, если все сделано правильно, в браузере на пустой белой странице должно появиться сообщение: «Hello, Flask!».

Ну и …получаем удовольствие от свершенных трудов тяжких.

Оригинал статьи находится на сайте "Учимся понемногу" по адресу https://yuri-ershow.github.io/learning-a-little/pages/article_8.html