Как запустить flask python на windows

Веб-приложения: Flask #

Python — это многоцелевой язык. В прошлом упражнении мы создавали приложения для командной строки, теперь рассмотрим веб-приложения.

Существует больше веб-фреймворков для Python, среди самых известных — Django, Flask или Pyramid.

Для наших целей мы будем использовать Flask, потому что он самый быстрый для понимания и строго не требует использования парадигмы MVC.

Флакон №

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

Основное использование Flask довольно примитивно. В файле hello.py напишите:

Затем запустите приложение, используя следующие команды. (В Windows вместо экспорта используйте набор команд.)

Вы должны увидеть текст, используемый в браузере по указанному адресу.

Переменная среды FLASK_APP сообщает Flask, где найти приложение. В заданном файле Flask автоматически ищет переменную с именем app. (Другие также могут быть установлены.) Переменная FLASK_DEBUG устанавливает режим отладки, который мы опишем чуть позже.

В программе мы создали фляжное приложение как приложение. Аргумент __name__ — это имя модуля — Flask использует его для поиска файлов, принадлежащих приложению (см. ниже статические и шаблоны).

С помощью декоратора @app.route мы зарегистрировали так называемый view (представление) — функцию, возвращающую контент для заданного маршрута в URL. Эта комбинация функции пути и представления называется route (или в уважительном смысле «маршрут»). Мы специально говорим, что контент, возвращаемый функцией index .

, будет доступен по пути / (то есть на «домашней странице»)

Можно обслуживать несколько разных адресов, просто добавляя дополнительные функции:

По адресу http://127.0.0.1:5000/hello/ вы увидите вторую страницу.

Режим отладки #

Переменная FLASK_DEBUG указывает приложению работать в режиме отладки: включается более удобный дамп ошибок, и приложениеавтоматически перезапускается после изменений.

Читайте также:  Как узнать версию windows 7 если система не грузится

Попробуйте сгенерировать исключение в функции hello() (например, деление на ноль — 1/0 ) и посмотрите, как ошибка «выглядит» в режиме отладки: Flask покажет traceback , подобный этому из командной строки, плюс вы на каждом уровне, это позволит использовать маленькую иконку для запуска консоли. PIN-код безопасности для этой консоли можно найти в терминале, где запущен сервер.

Режим отладки полезен, но опасен — он позволяет посетителям сайта (после взлома довольно простого «пароля») запускать любой код Python. Кроме того, это замедляет работу приложения. Поэтому используйте его только на своем компьютере.

Динамические маршруты #

При создании динамического веб-сайта не всегда можно заранее знать все URL-адреса. Например, вы хотите отображать информацию о пользователях по таким адресам, как /user/hroncok/ , но вы не можете добавлять новую функцию в свой код каждый раз, когда регистрируется новый пользователь. Вы должны использовать динамические маршруты:

Заключите переменную часть пути в фигурные скобки и используйте ее как параметр функции. При желании вы можете указать, к какому контенту применяется правило. Например, вы можете ввести числовой идентификатор статьи для таких адресов, как /post/42/, следующим образом:

Вы можете использовать разные правила, например:

  • строка принимает любой текст без косой черты (по умолчанию)
  • int принимает целые числа (и передает их в функцию представления как int , а не текст)
  • float также принимает десятичные числа с точками (и передает их как float )
  • путь принимает текст даже с косой чертой

Вы можете определить более одного маршрута для одной функции. Это часто используется со значением аргумента по умолчанию:

Получить URL #

Противоположный способ доступа к маршрутам — это когда вам нужно получить URL-адрес страницы, например, потому что вам нужно отобразить ссылку. Для этого используется функция url_for(), которая принимает в качестве первого параметраимя маршрута (или имя функции, обрабатывающей маршрут), а затем именованные аргументы для правил в динамическом маршруте:

Читайте также:  Как удалить старую windows перед установкой новой

Эту функцию можно использовать только внутри функции просмотра. Если вы хотите протестировать ее, например, в интерактивной консоли, вы можете использовать специальный контекст:

Вам может быть интересно, почему бы просто не создать URL-адрес вручную. Однако при таком подходе вы можете столкнуться с проблемой, если позже измените путь, что может произойти, например, даже если вы развернете веб-сайт на другом сервере. Генерация URL также может упростить развертывание статической версии страниц.

Поэтому для URL-адресов на вашем сайте мы рекомендуем последовательно использовать url_for.

Шаблоны #

Пока наш сайт довольно скучный: он содержит только обычный текст, никакого HTML.

Мы предполагаем, что вы знаете, что такое HTML и CSS. Если нет, рекомендуем ознакомиться с основами этих веб-технологий, например, на веб-сайте MDN.

Вы можете легко сделать что-то вроде:

. но, наверное, это было бы не очень приятно. Python — это язык, созданный для описания алгоритмов, процессов и логики, а не контента. Лучше поместить HTML в отдельный файл и использовать его как шаблон (англ. template ). Из Flask использование шаблона выглядит так:

Функция render_template не только возвращает HTML из заданного файла, но также может добавлять к нему информацию, которую она получает в именованных аргументах.

Покажем это на примере: рядом с файлом кода создайте папку templates и в ней hello.html с таким содержимым:

Шаблоны используют (по умолчанию) язык шаблонов Jinja2, который часто используется с Flask и другими платформами Python. Вы можете найти полное описание языка в документации, но для большинства страниц вы можете обойтись добавлением значения ( << переменная >> ) и условного содержания ( <% if %>), как указано выше. , или с циклом: <% для%>/ <% конец для %>. В больших приложениях полезно использовать <% include . %>, <% расширяет . %>и, возможно, также создание макросов <%macro . %>/ <% endmacro %>.

Читайте также:  Как узнать разрядность windows 7 на установочном диске

Весь контекст (переменные) шаблона должен исходить из вызова render_template(). Кроме того, вы можете использовать функции выбора, такие как url_for(). (Однако другие функции, известные из Python, использовать нельзя — хотя они и похожи, Jinja2 — это другой язык, чем Python.)

Фильтры #

Не очень элегантно брать некоторые данные (например, твиты из Twitter API) и вставлять в них свои модификации (например, преобразование в HTML) перед передачей их в шаблон. Вот для чего нужны фильтры. Фильтр преобразует значение в строку, которую мы затем показываем пользователю.

Например, вот фильтр времени, который считывает время в одном формате и преобразует его в другой:

В шаблоне date_example.html фильтр применяется по вертикали:

Если вам нужен очень общий фильтр, рекомендуется поискать в списке встроенных.

Экранирование #

Символы, имеющие особое значение в HTML, автоматически заменяются в тексте, вставляемом в шаблоны. Это предотвращает угрозы безопасности, когда пользовательский ввод интерпретируется как HTML.

Например, когда мы посещаем URL /hello/

в приложении выше

Изменить эту страницу на

Написано Миро Хрончоком, Петром Викториным и другими для курса MI-PYT в ЧТУ, 2016-2017 гг.

Поделиться с друзьями
ОС советы