Flask — это микрофрейм для Python, основанный на Werkzeug, Jinja 2 и добрых намерениях. — официальная документация на колбу
Чтобы объяснить эту цитату немного подробнее, Werkzeug — это библиотека утилит python, а Jinja 2 — движок шаблонов для Python.
Почему колба?
Около года назад я искал другой язык программирования вне PHP. Я был активным разработчиком PHP в течение 10 лет, и, честно говоря, делать приложения только на PHP становится немного скучно. Отсутствие стандартизированных библиотек или фреймворков также не помогло. Я обнаружил, что трачу половину своего времени на то, чтобы заново изобрести колесо, ради чего-то изобретать. Думая, что я знаю лучше, чем другие разработчики PHP, часто тратит слишком много времени на проект. Это очень распространено в мире PHP — почти каждый второй разработчик строит свою собственную инфраструктуру, и это может привести к определенным типам хаоса, но давайте не будем сейчас идти туда.
Я искал что-то новое, и на работе мы только начали использовать Django для серьезной веб-разработки. В то время Django казался слишком большим каркасом, и мне хотелось чего-то маленького, на чем я мог бы опираться. Затем я наткнулся на Flask , и с тех пор я использую его для большинства своих проектов личного развития.
В этой статье я расскажу об установке и настройке Flask и запуске базового примера «hello world». Кроме того, я предполагаю, что у вас установлена машина с Linux (или Mac) или вы используете какую-то приличную виртуальную машину, такую как Homestead Improved .
Скачать и установить
Для начала вам понадобится Python 2.6 или выше. В Homestead Improved это по умолчанию.
Во-первых, для чистого развития нам нужен virtualenv . Как разработчик Python, вы, скорее всего, будете создавать разные приложения. Разные приложения имеют разные зависимости, возможно, даже разные версии Python. Чтобы решить проблему зависимостей и используемых библиотек на вашем компьютере, мы используем virtualenv. Virtualenv создает отдельную среду для вашего приложения, так что вы можете сохранять свою среду полностью изолированной. Для получения дополнительной информации перейдите в документы .
Давайте установим это:
sudo pip install virtualenv
Вы могли бы даже сделать что-то вроде
sudo apt-get install python-virtualenv
После установки virtualenv создайте новую среду.
mkdir flaskproject cd flaskproject virtualenv env New python executable in env/bin/python Installing distribute............done.
Теперь у вас есть каталог с именем «flaskproject». Внутри этого каталога у вас есть еще один (с вашей средой), который называется «env». Чтобы начать использовать свою среду, вам нужно ее «активировать».
. env/bin/activate
Наконец, давайте установим Flask.
pip install Flask
Вы должны увидеть что-то вроде:
Successfully installed Flask Werkzeug Jinja2 itsdangerous markupsafe Cleaning up...
Если вы осмотрите свою папку, обратите внимание, что вы по-прежнему будете видеть только свой каталог env. Это нормально, потому что Flask установлен внутри вашего каталога env.
Все установленные пакеты будут находиться в подкаталоге site-packages
.
env/lib/python2.6/site-packages
Или вы можете сделать pip list
, в котором будут перечислены все установленные пакеты в вашей среде. Не бойтесь, если вы видите больше, чем просто Flask, потому что Flask также устанавливает свои собственные зависимости.
pip list
Теперь у вас есть готовая среда и ваше приложение.
Ваше первое приложение Flask
Давайте создадим app.py
внутри нашего каталога:
from flask import Flask app = Flask(__name__) app.debug = True @app.route('/') def main_method(): return "Hello everyone" if __name__ == '__main__': app.run()
Если мы запустим этот код из консоли, мы получим что-то вроде
python app.py Running on http://127.0.0.1:5000/
Если вы запустите браузер и перейдете по указанному адресу (или к указанному вами vhost, если используете виртуальные машины с Vagrant), вы должны увидеть свое сообщение.
Давайте объясним, что происходит:
from flask import Flask app = Flask(__name__)
Это импортирует библиотеку фляг из Flask и создает новый экземпляр класса Flask.
В процессе разработки у меня часто включен режим отладки. Вот для чего app.debug = True
строка app.debug = True
. Он дает мне много сообщений, автоматически перезагружает сервер, когда я изменяю некоторые файлы.
Далее мы создаем метод, который будет возвращать простую строку.
def main_method(): return "Hello everyone"
И выше нашего метода мы используем декоратор маршрутизации ( @app.route('/')
), чтобы указать URL для него. Любой запрос, поступающий на /
будет перенаправлен на main_method
. Просто, правда?
Этот последний фрагмент кода проверяет, вызывается ли скрипт напрямую, а не как импортированный модуль. Если это так, он запустит код автоматически.
if __name__ == '__main__': app.run()
Веселье с шаблонами
Теперь давайте создадим URL-адрес, который получит параметр и передаст его шаблону, например: /fun/params/optional_parameter
Добавьте эти строки в app.py
@app.route('/fun/urls/<param>') def fun_url(param=None): return render_template('fun_url.html')
В первой директиве у нас есть новый маршрут, который будет перенаправлен на наш новый метод. Поскольку мы определили параметр в конце, наш метод ожидает этот параметр. После этого мы возвращаем шаблон с методом render_template
.
Если вы сохраните app.py
и у вас будет запущен активный сервер, он сломается с ошибкой unknown method render_template
. Это потому, что мы вызываем метод, который не существует — или, по крайней мере, он не был импортирован. В нашем случае нам все еще нужно импортировать этот метод.
Вверху нашего файла добавьте это:
from flask import render_template
По умолчанию Flask ожидает, что файлы шаблонов будут расположены в каталоге шаблонов относительно нашего app.py
Итак, нам нужно создать новый каталог там.
mkdir templates cd templates touch fun_url.html
Теперь, если мы перезапустим наше приложение
python app.py * Running on http://127.0.0.1:5000/
И мы открываем URL-адрес как /fun/url/test
, мы должны увидеть пустую страницу. Пожалуйста, попробуйте добавить что-то в этот файл и перезапустить сервер. Вы должны увидеть результаты обновленного файла шаблона.
Теперь давайте передадим параметр в шаблон. Измените строку render_template
следующим образом:
return render_template('fun_url.html', fun_param=param)
После этого мы render_template
методу render_template
нужно отрендерить наш шаблон и передать ему параметр fun_param
. Если мы откроем fun_url.html
и добавим:
Parameter passed is: {{ fun_param }}
мы должны получить этот ответ после перезапуска сервера:
http://127.0.0.1:5000/fun/url/test Parameter passed is: test http://127.0.0.1:5000/fun/url/test1 Parameter passed is: test1
Куда пойти отсюда
Есть много вещей, которые вы можете сделать с Flask — это введение для начинающих, чтобы вы могли почувствовать, как работает Flask. Когда вы начинаете работать с базами данных, пользовательским доступом, REST API — все становится на удивление просто. На данный момент лучше всего начать с официальной документации Flask.
Кроме того, действительно прекрасной статьей, которая охватывает почти все, что вам понадобится в дальнейшей разработке, является мега-учебник Flask .
Вам понравилось это введение? Хотите увидеть более продвинутые примеры? Дай мне знать в комментариях!