После создания виртуальной среды и установки в ней фреймворка 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