Начните с Flask, фреймворка для веб-разработки основанного на Python, и узнайте, как вы можете использовать его в своих проектах IoT (прим. — Интернет вещей).
Django или Flask?
Если вы уже поиграли немного с Python и уверены, что хорошо пишете код, то, возможно, вы готовы повысить свой уровень и готовы попробовать разработать собственный сайт на платформе Python.
Хотя Python хорошо известен своими возможностями анализа данных и машинного обучения, он также используется для работы на некоторых крупнейших веб-сайтах в Интернете, включая Reddit, Netflix, Pinterest и Instagram.
Если вы хотите попробовать себя в веб-разработке на Python, сначала нужно выбрать между двумя фреймворками: Flask или Django. Они оба делают одно и то же — они конвертируют ваш код Python в полнофункциональный веб-сервер.
Flask — это минималистская версия, в которой все, что вы можете выбрать, является дополнением, тогда как Django поставляется со всем уже «подключенным» и имеет предопределенные библиотеки, методы и технологии, которые вы сможете использовать «из коробки».
Flask хорош для начинающих и для быстрого создания небольших или средних веб-приложений. Django, возможно, лучше для крупных корпоративных приложений, но также требует более глубокого понимания. В этом уроке мы начнем с Flask, но вы всегда сможете перейти к Django в будущем, когда познакомитесь ближе с основами.
Установка Flask
Как и большинство библиотек Python, установка фреймворка очень простая — установите его с помощью pip:
$ pip install Flask
На этом все. Можно идти дальше.
Клиент и Сервер
Прежде чем мы начнем разрабатывать наше первое веб-приложение Flask, нам необходимо выяснить роли клиента и сервера.
Клиент является веб-браузером, таким как Google Chrome или Firefox. Когда вы вводите веб-адрес и нажимаете ввод, вы отправляете запрос на сервер, который будет «обслуживать» нужный веб-сайт.
Сервер ответит на ваш запрос с помощью веб-сайта (в форме HTML, CSS и JavaScript) и затем отобразит этот запрос в веб-браузере. HTML определяет структуру сайта, CSS придает ему стиль, а JavaScript — это логика, выполняемая в вашем браузере.
Flask — это серверный фреймворк или «бэкэнд», как его часто называют. Вы программируете фрагмент кода, который получает запрос, создает веб-страницу, а затем отвечает необходимым HTML (и необязательными CSS и JavaScript).
Дисциплина разработки на стороне клиента или «front-end» связана с тем, как веб-сайт ведет себя в браузере после его получения с сервера. Мы не будем заострять на этом внимание, поскольку разработка на стороне клиента в основном выполняется только на JavaScript.
Ваше первое веб-приложение на Flask
Давайте начнем с давней традиции — с «Hello World».
Оговоримся, что этот пример является слегка измененной версией приложения «Hello World» в документации Flask.
from flask import Flask # Import Flask
app = Flask(__name__) # Create a Flask "app" instance
@app.route("/") # Instructs that the default url of http://127.0.0.1:5000/ should trigger this code
@app.route("/index") # Instructs that the url of http://127.0.0.1:5000/index should also trigger this code
def index():
return "<h1>Hello World!</h1>" # The HTML to return to the browser
if __name__ == '__main__': # Startup stuff
app.run(host='127.0.0.1', port=5000) # Specify the port and url
Запустите код, затем перейдите в Google Chrome (или в свой браузер) и введите «http://127.0.0.1:5000/» без кавычек. Вы должны увидеть восхитительный «Hello World», который приветствует вас в мире веб-разработки.
Масштабируемая структура для веб-приложений Flask
Хотя весь код в одном файле является быстрым и увлекательным введением в Flask, вам, вероятно, захочется разбить код на отдельные файлы, чтобы сделать его более управляемым.
Чтобы помочь вам в этом, я создал простую структуру, которую вы можете использовать для своих приложений Flask. Перейдите на GitHub, чтобы скачать исходный код.
Эта структура имеет скрипт «start.py», который вы запускаете для начала работы вашего веб-сервера. Весь код Python находится внутри папки с именем «code». В этой папке находится ваш файл «routes.py». Он содержит определения для запроса веб-адресов и того, как ваше приложение реагирует на них.
Если у вас есть какая-либо логика Python, такая как вычисление статистики или моделей машинного обучения, они также должны находиться внутри папки «code».
Папка «templates» содержит файлы HTML, которые будут возвращены сервером. Они называются шаблонами, потому что вы можете при желании вставить в них значения, чтобы изменить текст и графику во время выполнения.
Папка «static» содержит код, такой как CSS и Javascript, который не изменяется во время выполнения.
Настройка развертывания
Благодаря тому, что мы обсуждали до сих пор, вы сможете создать веб-приложение, которое будет работать на вашем компьютере, но если вы попытаетесь получить доступ к своему веб-сайту с другого компьютера, у вас возникнут трудности. Поэтому следующая тема — это тема развертывания.
Во-первых, нам нужно настроить порт, на котором представлен ваш сайт. Мы хотим установить для хоста «host = 0.0.0.0», а для порта «port = 80». Установка хоста и порта делает ваш сайт видимым на IP-адресе вашего хост-компьютера.
Например, если вы запускаете веб-приложение Flask на Raspberry Pi с IP-адресом 192.168.1.10, вы можете перейти к этому IP-адресу в веб-браузере на отдельном компьютере, и вы увидите, что ваша веб-страница обслуживается. Это отличная основа для проектов IoT и live панелей датчиков.
Мы определяем «port = 80», так как это порт по умолчанию для связи по протоколу HTTP. Когда вы запрашиваете URL в вашем браузере по HTTP, он знает, что нужно перейти на порт 80, поэтому вам не нужно явно указывать его в веб-адресе.
Чтобы все это работало, вы должны быть в той же сети, что и компьютер, на котором работает ваш веб-сервер, и вам нужно убедиться, что брандмауэр на вашем хост-компьютере (если он у вас есть) открыт для запросов на 80 порт.