Меня заинтересовало, вот если я изучаю фреймворк Django, то наверное можно как-нибудь более простым способом в целях отладки запустить Web–сервис или вывод статической информации. Поиск помог мне в этом, я вышел на микрофреймворк именуемый, как Flask. Что хорошо, так это что внутри Flask есть собственный Web-сервер и не нужно ставить Apache 2. Вообще не знаю что у меня получится, но то что есть пусть для меня будет небольшой базой, да и привести свои наработки к читаемому виду нужно.
На заметку: Изначально для работы Flask используется порт 5000
Устанавливаю микрофреймворк Flask в систему Raspbian Jessie, но это также справедливо и для Ubuntu Trusty (Desktop or Server):
pi@raspberrypi:~ $ sudo apt-get install python-pip python-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)
Также к запущенному 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)
итого
На заметку: Вообще правильнее было бы использовать виртуальное окружение: 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.