...

вторник, 10 сентября 2013 г.

[Перевод] Мега-Учебник Flask, Часть 1: Привет, Мир!

Это первая статья в серии, где я буду документировать мой опыт написания веб-приложения на Python, используя микрофреймворк Flask.

Здесь список всех статей в серии:


Часть 1: Привет, Мир! (эта статья)

Часть 2: Шаблоны

Часть 3: Формы

Часть 4: База данных

Часть 5: Вход пользователей

Часть 6: Страница профиля и аватары

Часть 7: Unit-тестирование

Часть 8: Подписчики, контакты и друзья

Часть 9: Пагинация

Часть 10: Полнотекстовый поиск

Часть 11: Поддержка e-mail

Часть 12: Реконструкция

Часть 13: Дата и время

Часть 14: I18n and L10n

Часть 15: Ajax

Часть 16: Отладка, тестирование и профилирование

Часть 17: Развертывание на Linux (даже на Raspberry Pi!)

Часть 18: Развертывание на Heroku Cloud


Моя предыстория




Я разработчик ПО с двузначным числом лет опыта разработки комплексных приложений на нескольких языках. Впервые я познакомился с Python для создания привязок к C++ библиотеке на работе. Вдобавок к Python, я писал веб-приложения на PHP, Ruby, Smalltalk и, верите вы или нет, еще на С++. Из всего этого, я нахожу комбинацию Python/Flask самой гибкой.



Приложение




Приложение, которое я собираюсь разрабатывать как часть этого руководства, является сервером микроблогов, и я решил назвать его microblog. Довольно креативно, я знаю.

Во время нашего прогресса я затрону следующие темы:



  • Управление пользователями, включая управление входами, сессиями, ролями пользователя, профилями и пользовательскими аватарами

  • Управление базой данных, включая миграцию

  • Поддержка форм, включая валидацию полей

  • Пагинация длинных списков элементов

  • Полнотекстовый поиск

  • E-mail уведомления пользователей

  • HTML шаблоны

  • Поддержка нескольких языков

  • Кеширование и другая оптимизация производительности

  • Методы отладки для серверов разработки и продакшна

  • Установка на продакшн сервер


Как видите, я весьма значительно берусь за все это. Надеюсь, что это приложение, когда я его закончу, станет чем-то вроде шаблона для написания других веб-приложений.


Требования




Если ваш компьютер поддерживает Python 2.6/2.7, то все, вероятно, пойдет хорошо. Приложение из руководства должно нормально работать на Windows, OS X и Linux.

Это руководство подразумевает, что вы знакомы с окном терминала (командной консолью в случае Windows), и вы знаете основные команды для работы с файлами вашей ОС. Если это не так, то перед тем как продолжить, я рекомендую вам ознакомиться с тем, как создавать директории, копировать файлы и т.д., используя консоль.


Наконец, вы должны чувствовать себя свободно в написании кода на Python. Знакомство с модулями и пакетами этого языка также не помешает.


Установка Flask




Ну что ж, приступим!

Если у вас еще не установлен Python 2.7, то берем его отсюда.

Теперь нам нужно установить Flask и несколько расширений, которые мы будем использовать. Я предпочитаю создание виртуального окружения, где все это будет установлено таким образом, что ваша основная установка Python затронута не будет. В качестве бонуса, вам не нужен будет root доступ для установки таким способом.


Итак, открываем терминал, выбираем место, где будет ваше приложение, и создаем новую папку, в которой оно будет содержаться. Назовем эту папку microblog.


Далее скачиваем virtualenv.py и кладем его внутрь новой папки.


Чтобы создать новое окружение введите следующую команду:



python virtualenv.py flask




Эта команда создаст полноценное окружение Python внутри папки flask

Виртуальные окружения могут быть активированы и деактивированы по желанию. Активированное окружение добавляет путь своей папки bin в path системы, например, когда вы вызываете интерпретатор python, то получаете версию текущего окружения, а не системную. Лично я никогда не любил это свойство, поэтому ни разу не активировал ни одно из моих окружений, вместо этого я просто вызывал тот интерпретатор, который хотел, печатая его путь.


Прим. пер.: Перед тем как вы начнете вводить команды, хочу отметить, что в комментариях к девятой части отметится баг в flask-whooshalchemy, исправленную версию можнонужно скачать отсюда (репозиторий автора)


Если вы пользователь Linux, OS x или Cygwin, установите flask и расширения, вводя следующие команды одну за одной:


Список команд


flask/bin/pip install flask==0.9
flask/bin/pip install flask-login
flask/bin/pip install flask-openid
flask/bin/pip install flask-mail
flask/bin/pip install sqlalchemy==0.7.9
flask/bin/pip install flask-sqlalchemy==0.16
flask/bin/pip install sqlalchemy-migrate
flask/bin/pip install flask-whooshalchemy==0.54a
flask/bin/pip install flask-wtf==0.8.4
flask/bin/pip install pytz==2013b
flask/bin/pip install flask-babel==0.8
flask/bin/pip install flup






Если же вы пользователь Windows, то команды слегка отличаются:

Список команд


flask\Scripts\pip install flask==0.9
flask\Scripts\pip install flask-login
flask\Scripts\pip install flask-openid
flask\Scripts\pip install sqlalchemy==0.7.9
flask\Scripts\pip install flask-sqlalchemy==0.16
flask\Scripts\pip install sqlalchemy-migrate
flask\Scripts\pip install flask-whooshalchemy==0.54a
flask\Scripts\pip install flask-wtf==0.8.4
flask\Scripts\pip install pytz==2013b
flask\Scripts\pip install flask-babel==0.8
flask\Scripts\pip install flup






Эти команды скачают и установят все пакеты, которые мы будем использовать в нашем приложении.

Учтите, что мы собираемся использовать Flask 0.9, а не последнюю версию. Flask 0.10 не было довольно долго и некоторые расширения не готовы для работы с данной версией. Также есть несколько несовместимостей между пакетами и последней версией pip, которые решены использованием конкретных версий для установки.

Windows пользователей ждет еще один шаг. Наблюдательный читаель заметит, что в списке команд для Windows отсутствует flask-mail. Это расширение не устанавливается чисто на Windows, поэтому мы пойдем обходным путем:



flask\Scripts\pip install --no-deps lamson chardet flask-mail


Я не буду вдаваться в подробности, поэтому если вы хотите узнать больше, прочтите документацию к flask-mail.


Если установка всех пакетов прошла успешно, вы можете удалить virtualenv.py, поскольку файл нам больше не понадобится.


«Hello, World!» в Flask




Теперь у вас есть подпапка flask, в вашей папке microblog, содержащая интерпретатор Python и фреймворк Flask с расширениями, которые мы будем использовать в этом приложении. Настало время написать наше первое веб-приложение!

После того как вы переместились папку microblog, давайте создадим основную структуру папок для нашего приложения:



mkdir app
mkdir app/static
mkdir app/templates
mkdir tmp


В папку app мы поместим само наше приложение. Подпапка static нужна для хранения статики, такой как картинки, javascript файлы и таблицы стилей. Подпапка templates, очевидно, предназначена для хранения наших шаблонов.


Давайте начнем с создания простого скрипта инициализации нашего пакета app (файл app/__init__.py)



from flask import Flask

app = Flask(__name__)
from app import views


Скрипт выше просто создает объект приложения (наследуя Flask), затем импортирует модуль представлений, который мы еще не написали.


Представления — это обработчики, которые отвечают на запросы веб-браузера. Представления в Flask пишутся как Python функции. Каждая функция представления сопоставляется с одним или несколькими запросами URL.


Напишем нашу первую функцию представления (файл app/views.py)



from app import app

@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"


Это весьма простое представление, которое просто возвращает строку для отображения в пользовательском браузере. Два декоратора route создают привязку адресов / и /index к этой функции.


Последним шагом для получения полностью работающего веб-приложения будет создание скрипта, который стартует веб-сервер нашего приложения. Давайте назовем скрипт run.py и положим его в корневой каталог (microblog/):



#!flask/bin/python
from app import app
app.run(debug = True)


Скрипт просто импортирует переменную app из нашего пакета app и вызывает метод run для того, чтобы запустить сервер. Помните, что переменная app — экземпляр класса Flask, мы создали его выше.


Для запуска вашего приложения просто запустите скрипт. На OS X, Linux и Cygwin вам следует пометить файл исполняемым перед тем как вы сможете его запустить.



chmod a+x run.py


Тогда скрипт может быть вызван просто:



./run.py


В Windows процесс немного отличается. Нет необходимости помечать файл исполняемым. Вместо этого вам нужно запустить скрипт как аргумент интерпретатора Python:



flask/Scripts/python run.py


После старта сервер будет прослушивать порт 5000, ожидая соединений. Теперь откроем браузер и введем следующий URL в адресную строку:


Или же вы можете использовать эту ссылку:



http://localhost:5000/index


Теперь вы увидели маршрутизацию в действии? Первый URL привязан к /, в то время как второй к /index. Оба маршрута ассоциированы с нашей функцией представления, поэтому они дают одинаковый результат. Если вы введете любой другой маршрут, то получите ошибку, так как только эти два были привязаны к функции представления.


Когда вы закончите играть с сервером вы можете просто нажать Ctrl-C, чтобы остановить его.


И этим я хочу закончить первую часть этого руководства.


Те из вас, кто поленился печатать, могут скачать код из этого руководства ниже:


Скачать microblog-0.1.zip.


Обратите внимание, что вам нужно установить Flask, чтобы запустить приложение из архива выше.


Что дальше


В следующей части серии мы изменим наше маленькое приложение для использования HTML шаблонов.


Надеюсь увидимся в следующей части.


Мигель


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий