Flask and Python на Raspberry Pi 3

Posted by

Меня заинтересовало, вот если я изучаю фреймворк Django, то наверное можно как-нибудь более простым способом в целях отладки запустить Webсервис или вывод статической информации. Поиск помог мне в этом, я вышел на микрофреймворк именуемый, как . Что хорошо, так это что внутри Flask есть собственный Web-сервер и не нужно ставить Apache 2. Вообще не знаю что у меня получится, но то что есть пусть для меня будет небольшой базой, да и привести свои наработки к читаемому виду нужно.

На заметку: Изначально для работы Flask используется порт 5000

Устанавливаю микрофреймворк Flask в систему Raspbian Jessie, но это также справедливо и для Ubuntu Trusty (Desktop or Server):

pi@raspberrypi:~ $ sudo apt-get install -pip -flask -y

Устанавливаю Flask как способ номер 2, выше был способ номер 1:

pi@raspberrypi:~ $ sudo pip install Flask

Разбираю собственный скрипт:

pi@raspberrypi:~ $ nano run

#!/usr/bin/python

from flask import flask

app = flask(__name__)

@app.route("/")

def hello():

return "Hello World!"

if __name__ == "__main__":

app.run()

pi@raspberrypi:~ $ ./run

Traceback (most recent call last):

File "./run", line 2, in <module>

from flask import flask

ImportError: cannot import name flask

Ошибка здесь в том, что import flask должно быть написано как import Flask и app = flask неправильно, а должно быть написано как app = Flask. (Это важно)

Итого правильный код:

#!/usr/bin/python

from flask import Flask → импортируем модуль Flask

app = Flask(__name__) → создаем экземпляр класса

@app.route("/") → указываем какой URL запустит функцию def

def hello():

return "Hello World!" → возвращаем значение которое отобразится в браузере

if __name__ == "__main__":

app.run()

Запускаю скрипт:

pi@raspberrypi:~ $ ./run

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

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

#!/usr/bin/python

from flask import Flask → импортируем класс flask из модуля Flask

app = Flask(__name__)

@app.route("/")

def hello():

return "Hello World!"

if __name__ == "__main__":

app.run(host='0.0.0.0')

Запускаю измененную программу:

pi@raspberrypi:~ $ ./run

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

Первая Web-страница с использованием связки Python + Flask

Также к запущенному URL адресу можно добавлять шаблоны:

pi@raspberrypi:~ $ mkdir templates

#!/usr/bin/python

from flask import Flask,request,render_template → импортируем нужны компоненты

app = Flask(__name__)

@app.route("/")

def hello():

return render_template('index.html')

if __name__ == "__main__":

app.run(host='0.0.0.0')

На заметку: Flask будет искать шаблон в папке Tempates рядом с приложением,

а содержимое файла index.html:

<html>

<head>

<title>Мое первое Web-приложение</title>

</head>

<body>

<h1>Hello World</h1>

</body>

</html>

pi@raspberrypi:~ $ ./run1

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

итого

Flask с использованием шаблона для страницы

 

На заметку: Вообще правильнее было бы использовать виртуальное окружение: tips_ubuntu_14_04_python_create_environment_v1.odt

pi@raspberrypi:~ $ mkdir test

pi@raspberrypi:~ $ cd test/

pi@raspberrypi:~/test $ pyvenv activate

pi@raspberrypi:~/test $ pip install Flask

pi@raspberrypi:~/test $ nano server

#!/usr/bin/python

from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

return "Hello World!"

if __name__ == "__main__":

app.run(host='0.0.0.0')

pi@raspberrypi:~/test $ chmod +x server

pi@raspberrypi:~/test $ ./server

Задача: чтобы добавить новый путь в Webприложение

#!/usr/bin/python

from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

return "Hello World!"

@app.route('/home')

def index2():

return "This is home directory"

if __name__ == "__main__":

app.run(host='0.0.0.0',debug=True)

т. е. При обращении к / будет выведено Hello World!, а при /home выведено This is home directory

  • debug = True — это для отладки программы.

pi@raspberrypi:~/test $ pyvenv deactivate

Вот на этой ноте я пока завершу свое повествование. Да не спорю что не все рассказал про Flask, но главное ведь начать, а дальше уже с практикой и начнется все понимание. Как-то не связанно, но это для меня в первую очередь. Вообще есть специализированная литература по этому микрофреймворку, а поиск Google в этом в Вам в помощь. На этом я прощаюсь, с уважением Олло Александр aka ekzorchik.