The Flask Mega-Tutorial, Part I: Hello, World! / The Flask Mega-Tutorial, Часть 1: Привет, Мир!: The Flask Mega-Tutorial, Part I: Hello, World!

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

The Flask Mega-Tutorial, Часть 1: Привет, Мир!

wiygn 06.09.13 в 22:32

0

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

wiygn 06.09.13 в 22:33

0

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

wiygn 06.09.13 в 22:33

0

Часть 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

wiygn 06.09.13 в 22:39

1

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

wiygn 06.09.13 в 22:39

0

Я разработчик ПО с двузначным числом лет опыта разработки комплексных приложений на нескольких языках. Впервые я познакомился с Python для создания привязок к C++ библиотеке на работе.

wiygn 06.09.13 в 22:42

0

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

wiygn 06.09.13 в 22:45

0

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

wiygn 06.09.13 в 22:47

0

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

wiygn 06.09.13 в 22:47

0

Управление пользователями, включая управление входами, сессиями, ролями пользователя, профилями и пользовательскими аватарами
Управление базой данных, включая миграцию
Поддержка форм, включая валидацию полей
Пагинация длинных списков элементов
Полнотекстовый поиск
E-mail уведомления пользователей
HTML шаблоны
Поддержка нескольких языков
Кеширование и другая оптимизация производительности
Методы отладки для серверов разработки и продакшна
Установка на продакшн сервер

wiygn 06.09.13 в 22:54

0

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

wiygn 06.09.13 в 22:59

0

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

wiygn 06.09.13 в 23:00

0

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

wiygn 06.09.13 в 23:03

0

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

wiygn 06.09.13 в 23:05

0

Начнем!

wiygn 06.09.13 в 23:05

0

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

wiygn 06.09.13 в 23:06

0

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

wiygn 06.09.13 в 23:08

0

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

wiygn 06.09.13 в 23:10

0

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

wiygn 06.09.13 в 23:10

0

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

wiygn 06.09.13 в 23:10

0

python virtualenv.py flask

wiygn 06.09.13 в 23:11

0

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

wiygn 06.09.13 в 23:11

0

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

wiygn 06.09.13 в 23:22

0

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

wiygn 06.09.13 в 23:23

0

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

wiygn 06.09.13 в 23:23

0

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

wiygn 06.09.13 в 23:23

0

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

wiygn 06.09.13 в 23:24

0

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

wiygn 07.09.13 в 02:46

0

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

wiygn 07.09.13 в 02:49

0

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

wiygn 07.09.13 в 02:52

0

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

wiygn 07.09.13 в 02:52

0

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

wiygn 07.09.13 в 02:53

0

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

wiygn 07.09.13 в 02:53

0

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

wiygn 07.09.13 в 02:56

0

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

wiygn 07.09.13 в 02:57

0

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

wiygn 07.09.13 в 02:57

0

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

wiygn 07.09.13 в 03:00

0

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

wiygn 07.09.13 в 03:01

0

from flask import Flask

wiygn 07.09.13 в 03:01

0

app = Flask(__name__)
from app import views

wiygn 07.09.13 в 03:01

0

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

wiygn 07.09.13 в 03:02

0

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

wiygn 07.09.13 в 03:04

0

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

wiygn 07.09.13 в 03:04

0

from app import app

wiygn 07.09.13 в 03:05

0

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

wiygn 07.09.13 в 03:05

0

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

wiygn 07.09.13 в 03:07

0

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

wiygn 07.09.13 в 03:08

0

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

wiygn 07.09.13 в 03:08

0

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

wiygn 07.09.13 в 03:11

0

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

wiygn 07.09.13 в 03:12

0
Минутку...

Следующая страница →