Знакомство с Flask, Микрофреймворк на Python

знакомство с flask

Flask поможет вам ускорить разработку Python в ваших проектах.

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

  1. Легко устанавливается
  2. Поддерживается активным сообществом
  3. Хорошая документация
  4. Он очень прост и минималистичен, и не включает в себя ничего лишнего
  5. В то же время Flask достаточно гибкий, вы можете добавлять расширения, если вам нужно больше функциональности

 

В этом туториале мы рассмотрим следующее:

  1. Установка Flask
  2. Рекомендуемая  структура файлов и  директорий для Flask проекта
  3. Конфигурация и инициализация Flask  приложения
  4. Создание представлений и шаблонов

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

Готовы? Поехали!

 

Установка

Нам понадобится следующее для данного урока:

  1. Python (тут мы используем Python 2)
  2. virtualenv и virtualenvwrapper
  3. Flask

Возможно, у вас уже установлен Python. Вы можете проверить, запустив команду python в терминале. Если он установлен, вы увидите следующее:

Если он у вас еще не установлен, то скачать его можете здесь.

Мы начнем с установки виртуального окружения (virtualenv), это инструмент для создания изолированных окружений Python. Мы должны использовать виртуальные среды для поддержания зависимостей, используемых различными Python проектами, отдельными и, для сохранения нашей глобальной директории пакетов.  Мы продвинемся сейчас на шаг вперед и установим virtualenvwrapper —  это набор расширений, которые облегчают использование виртуального окружения, предоставляя простые команды.

Чтобы создать и активировать виртуальное окружение, выполните следующие команды:

Теперь у нас есть виртуальное окружение, которое называется my-ven, которое мы активировали и уже работает. Теперь любая зависимость, которую мы установим будет установлена здесь, а не глобально. Не забывайте активировать виртуальное окружение, всякий раз когда вы хотите использовать или работать над этим проектом!

Далее, давайте создадим директорию для нашего приложения. Это то, где все наши файлы будут находится:

Наконец, давайте установим Flask:

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

Для чего все эти пакеты?

Flask использует Click (Command Line Interface Creation Kit) для интерфейса командной строки, который позволит вам добавить пользовательские команды оболочки для приложения.

ItsDangerous обеспечивает безопасность при передаче данных с помощью криптографического подписания.

Jinja2 — это мощный шаблонизатор для Python, в то время как MarkupSafe — библиотека для обработки HTML строк.

Werkzeug — это вспомогательная библиотека для WSGI, протокол, который обеспечивает эффективное общение веб-приложений и веб-серверов.

Вы можете сохранить результат в файле. Это хорошая практика, так как человеку, который захочет поработать над вашим проектом или запустить его, необходимо знать зависимости для установки. Следующая команда сохранит зависимости в файле requirements.txt:

 

Скажи «Hello World!» с помощью Flask

Я думаю, что любой урок для начинающего программиста не может не начаться с классического «Hello World!».  Так вот как это сделать в Flask:

Создайте следующий файл hello_world.py  в вашем любимом текстовом редакторе (у меня Atom, вот кстати к нему полезные плагины):

Мы начинаем с импортирования класса Flask и создания его экземпляра. Мы используем аргумент __name__, чтобы указать модуль или пакет приложения, так что Flask знает, где искать другие файлы, такие как шаблоны. Затем у нас есть простая функция, которая будет отображать строку Hello World!. Последний декоратор просто говорит Flask, какой путь отобразит результат функции.В данном случае, мы указали путь /, который является домашним URL-адресом .

Давайте посмотрим это в действии. В вашем терминале выполним следующее:

Первая команда говорит системе какие приложения нужно запустить. Следующая запускает сервер. Введите указанный URL-адрес (http://127.0.0.1:5000/)  в браузере. Вуаля! Это работает!

 

 hello world

Структура каталогов

Пока у нас есть только один функциональный файл в нашем проекте helloworld.py. В реальном веб-проекте, как правило, больше файлов, чем сейчас. Очень важно поддерживать хорошую структуру каталогов для организации различных компонентов приложения по отдельности. Вот некоторые общие каталоги в проекте Flask:

  1. /app:  Это каталог в my-project. Тут весь наш код, и другие файлы, такие как requirements.txt снаружи.
  2.  /app/templates:  Здесь наши HTML-файлы.
  3. /app/static: Здесь статические файлы — CSS и JavaScript, а также изображения. Тем не менее, нам не нужна эта папка для этого урока, так как мы не будем использовать никаких статических файлов.

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

hello_world.py кажется немного неуместным сейчас, не так ли? Не волнуйтесь, мы исправим это в следующем разделе.

 

Структура файла

Для примера «Hello World!» у нас был только один файл. Чтобы создать наш сайт нам понадобится несколько файлов, которые будут выполнять различные функции. Большинство Flask приложений имеют следующую основную структуру файлов:

  1. run.py: Это точка входа в приложения. Мы запустим этот файл для запуска сервера колбу и запустить наше приложение.
  2. config.py: config.py этот файл содержит конфигурацию переменных для вашего приложения, такие как сведения о базе данных.
  3. app/__init__.py: этот файл intializes модуль Python.
  4. app/views.py: этот файл содержит все маршруты для нашего приложения. Это скажет Flask’у, что показывать по определенному маршруту.
  5. app/models.py: это где модели определяются. Модель-это представление таблицы базы данных в код. Однако, поскольку мы не будем использовать базу данных в этом учебнике нам не понадобится этот файл.

Некоторые проекты имеют несколько модулей (например, приложение/Просмотров каталогов с большим количеством файлов взгляды на это), но это сгодится.  Идти вперед и создать эти файлы, и больше удалить helloworld.py поскольку мы не понадобится:

Вот наши последние структуры каталогов:

Теперь давайте заполним эти пустые файлы каким-то кодом!

 

Конфигурация

Файл config.py должен содержать одну переменную в строке, вот так:

Обратите внимание, что  config файл очень упрощенный и не подойдет для более сложных приложений. Для больших приложений вы можете выбрать различные файлы config.py для тестирования, разработки и продакшн, и держать их в директории config, используя классы и наследование. Вы можете использовать некоторые переменные, которые не должны находиться в свободном доступе, такие как пароли и секретные ключи. Они могут быть помещены в файл instance/config.py , которые не должны быть  запушены в систему управления версиями.

 

Инициализация

Далее нам нужно инициализировать наше приложение со всеми нашими конфигурациями. Это сделано в файле app/__init__.py Обратите внимание, что если мы установим instance_relative_config  на  True, мы сможем использовать app.config.from_object(‘config’)  для загрузки файла config.py.

 

Беги, Flask, беги!

Все, что нам нужно сделать сейчас, это настроить наш файл run.py так что мы можем запустить сервер Flask.

Для того чтобы использовать команду flask run, как мы делали это ранее, мы должны установить переменную окружения FLASK_APP как тут:

Мы получим 404 страницу, потому что у нас нет ни одного представления для нашего приложения.

 

Views

Из примера «Hello World!»  у вас уже есть понимание того, как работают представления.  Мы используем декоратор @app.route , чтобы указать путь, по которому мы хотели бы чтоб представление отобразилось. Мы уже видели, как написать представление, которое возвращает строку.  Давайте посмотрим, что еще мы можем сделать с представлениями.

Flask предоставляет метод render_template, который мы можем использовать, чтобы указать, какой HTML-файл должен быть загружен в особое представление . Конечно файлы  index.html и about.html еще не существует, поэтому Flask выдаст нам ошибку — Template Not Found, когда мы укажем эти пути. Продолжаем; запустим приложение и посмотрим:

screenshot мeтод Flask

 

 

 screenshot мeтод Flask 1

Шаблоны

Flask позволяет нам использовать различные языки шаблонов, но наиболее популярный  на сегодняшний день  — Jinja2. Помните его с наших установленных зависимостей? У Jinja синтаксис, который позволяет добавлять некоторую функциональность к нашим HTML-файлам, таким как блоки if-else и циклы for, а также использовать переменные внутри наших шаблонов. Jinja также позволяет реализовывать наследование шаблонов, это означает, что у нас может быть  базовый шаблон, от которого происходит  наследование других шаблонов. Круто, да?

Давайте начнем с создания трех HTML-файлов

Начнем с файла base.html , используя слегка измененную версию этого примера шаблона bootstrap:

Вы заметили теги {% block %} и {% endblock %}? Мы также будем их использовать в шаблонах, которые наследуются от базового шаблона:

Мы используем тег {% extends %} для того чтобы наследовать от базового шаблона.  Вставляем динамический контент внутри тегов {% block %}. Все остальное загружается прямо из базового шаблона, поэтому нам не нужно повторно писать то, является общим для всех страниц, например, панель навигации и футер.

Давайте обновим наш браузер и посмотрим, что мы увидим:

flask-is-awesome-rama

 

 

 

 

 

знакомство с flask 1

Заключение

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

 

Источник: scotch.io