Статьи

Колба для масс

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 .

Вам понравилось это введение? Хотите увидеть более продвинутые примеры? Дай мне знать в комментариях!