🏠 | 💻 IT | Flask |

Первый проект на Flask

Содержание статьи
Введение
FLASK_APP
Просмотр всех методов (url_map)
Пример

Введение

Предположим, что вы уже умеете писать какой-то код с помощью Flask. Если нет - прочитайте статью «Основы Flask»

Вы можете создать какой-то .py файл и запустить его командой python example.py. У вас всё работате и открыв 127.0.0.1:5000 в браузере или сделав запрос к своему REST API вы видите нужный результат.

Это хорошее начало, но пока что только первый шаг к созданию приложения на Flask

FLASK_APP

Чтобы показать Flask в каком файле находится приложение нужно присвоить правильное значение переменной FLASK_APP.

Допустим вы делаете сайт TopBicycle.ru и код вашего приложения сохраненён как topBicycle.py

Если вы в Windows выполните

set FLASK_APP=topBicycle.py

Или export для Linux

export FLASK_APP=topBicycle.py

Без пробелов вокруг =

На время разработки приложения присвойте переменной FLASK_ENV значение development

set FLASK_ENV=development

Или export для Linux

export FLASK_ENV=development

development упростит нам разработку, например, в этом режиме Flask будет следить за изменением исходного кода и автоматически перезапускать сервер.

Теперь вы можете перейти в папку с вашим .py файлом и выполнить flask run чтобы запустить приложение

flask run

(topBicycle_venv) C:\Users\Andrei\PycharmProjects\topBicycle>flask run * Serving Flask app "topBicycle.py" (lazy loading) * Environment: development * Debug mode: on * Restarting with stat * Debugger is active! * Debugger PIN: 131-857-324 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Просмотр всех методов

Чтобы посмотреть какие url слушает ваше приложение и какие HTTP методы в данный момент поддерживает каждая url можно перейти в интерактивный режим и воспользоваться .url.map

CTRL + C python import topBicycle topBicycle.app.url_map

Map([<Rule '/' (OPTIONS, GET, HEAD) -> welcome>, <Rule '/static/<filename>' (OPTIONS, GET, HEAD) -> static>])

Показаны все обслуживаемые url, в нашем случае одна / названия функций и разрешенные методы.

Пример

В качестве первого проекта сделаем простое приложение, которое на главной странице будет показывать статичный html а на странице /count_views будет вести подсчёт посещений

Назовём файл project.py

from flask import Flask, render_template, abort, jsonify, request, redirect, url_for app = Flask(__name__) @app.route("/") def home(): return render_template("home.html") counter = 0 @app.route("/count_views/") def count_views(): global counter counter += 1 return "This page was served " + str(counter) + " times"

Нужно в папке с project.py создать папку templates и в ней создать какой-то простой .html файл назвать его home.html

Также не забудьте про export или set если вы под Windows

export FLASK_APP=project.py

Теперь по адресу

127.0.0.1:5000/

Будет ваш home.html файл а по адресу

127.0.0.1:5000/count_views/

Будет счётчик посещений в виде текста

This page was served X times

Когда проект готов, нужно воспользоваться Freeze для того, чтобы сохранить список зависимостей в файл requirements.txt

python -m pip freeze > projects/your_project/requirements.txt

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

Общие правила создания проектов на Flask

Создадим в проекте папку static и поместим туда изображение flasklogo.png

Создадим папку templates а внутри этой папки файлы home.html и base.html

base.html будет шаблоном, который мы будем использовать для home.html и многих других файлов, которые создадим в будущем.

Работу с шаблонами разберём в следующем уроке - «Шаблоны Jinja»

Статьи о Flask
Python
Flask
Запуск Flask на хостинге
Запуск Flask на Linux сервере
Flask в Docker
Шаблоны Jinja
Web Forms
Blueprint - Чертежи Flask
Как разбить приложение Flask на части
Flask FAQ
Ошибки
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: