Описан процесс установки, настройки среды разработки Eclipse, необходимых плагинов для него и создания простого web-приложения на языке Python для размещения в среде Google App Engine. При разработке приложения рассматриваются вопросы создания правил маршрутизации http-запросов с помощью среды webapp2, предоставляемой облаком Google App Engine, использования шаблонов в среде Jinja2.
Установка среды разработки Eclipse и плагинов для него
- Скачайте и установите комплект разработки Java с этой страницы http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u4-downloads-1591156.html
- Скачайте и установите тоже самое для Python'а со страницы http://python.org/download/releases/2.7.3/
- Качаем и устанавливаем комплект разработчика для Google App Engine для Python со страницы https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python
- Скачайте с этой страницы http://www.eclipse.org/downloads/packages/eclipse-ide-java-and-report-developers/indigosr2 Eclipse для вашей платформы, распакуйте скачанный архив, запустите Eclipse с помощью программы eclipse.exe папки eclipse, извлеченной из архива.
- Установите плагин Google App Engine для Eclipse:
- Откройте окно установки плагинов через пункт меню Help - Install New Software...
- Нажмите кнопку Add... для добавления нового источника программного обеспечения
- В поле Name напишите GAE Plugin, а в поле Location: http://dl.google.com/eclipse/plugin/3.7 и нажмите кнопку OK
- Дождемся, когда загрузится список доступных из этого источника плагинов, и отметим пункты:
- Google Plugin for Eclipse (required)
- SDKs
- Нажмем кнопку Next дважды, соглашаемся с лицензиями и нажимаем кнопку Finish
- Терпеливо ждем окончания установки, попутно соглашаемся со всеми вопросами и предупреждениями, а в конце соглашаемся с перезагрузкой Eclipse'а
- Установите плагин PyDev для поддержки языка Python:
- Откройте окно установки плагинов через пункт меню Help - Install New Software...
- Нажмите кнопку Add... для добавления нового источника программного обеспечения
- В поле Name напишите PyDev, а в поле Location: http://pydev.org/updates и нажмите кнопку OK
- После загрузки списка плагинов отмечаем пункт PyDev
- Нажимаем кнопку Next, а потом еще раз, соглашаемся с лицензией и нажимаем кнопку Finish
- Ждем окончания процесса установки, соглашаясь со всем, в конце и с перезагрузкой
- Подключим интерпретатор Eclipse к установленному Python'у: откроем окно настроек через меню Window - Preferences; разверните ветку PyDev и выберите пункт Interpreter - Python; нажмите кнопку New...; рядом с полем Interpreter Executable нажмите кнопку Browse... и укажите python.exe из папки с Python'ом, установленном в пункте 2, нажмите ОК и в следующем окне тоже; кнопкой OK закройте окно настроек.
- Этот пункт следует выполнять после создания web-приложения. Добавим пункт запуска web-приложения в кнопку Run на панели инструментов: нажмите кнопочку со стрелкой вниз рядом с кнопкой Run и выберем пункт Run Configurations...; слева выберите ветку Python Run и нажмите кнопку New launch configuration в верхней части окна; в правой части окна заполните реквизиты следующими значениями:
- Name (название пункта запуска): helloworld
- Project: выберите наш проект
- Main Module (файл старта сервера разработки приложений: dev_appserver.py, он находится в комплекте разработчика для Google App Engine, установленном в пункте 3): в моем случае выглядит так: D:/gae-python-1.6.6/dev_appserver.py
- На закладке Arguments реквизит Program Arguments: "${workspace_loc}/helloworld" (название нашего проекта, создаваемого в следующем пункте)
- На последней закладке в реквизите Display in favorites menu установите галочку для пункта Run
- Нажмите кнопку Apply и теперь пунктик запуска будет доступен в кнопке Run
Создание простого web-приложения
Eclipse запущен, содержит необходимые плагины, и даже немного настроен, теперь создадим простое web-приложение и запустим его на локальном сервере разработки.
- Через меню File - New - Project... открываем окно создания проекта
- Разворачиваем ветку PyDev и выбираем пункт PyDev Google App Engine Project, нажимаем кнопку Next >
- Вводим следующие характеристики создаваемого приложения:
- Project name: helloworld
- Project type: Python
- Grammar Version: 2.7
- Interpreter: Default
- Add project directory to the PYTHONPATH?
- Нажимаем кнопку Next >
- На следующей странице указываем каталог с комплектом разработчика Google App Engine для Python, установленного в 3-ем пункте предыдущего абзаца
- Потом появится окошко со списком добавляемых библиотек, нажмите OK, а потом кнопку Finish
- На вопрос о необходимости переключиться в перспективу PyDev - соглашайтесь
Проект создан приступим к разработке. Будем использовать фреймвок webapp, он уже установлен в Google App Engine.
Создание конфигурационного файла web-приложения
Конфигурационный файл определяет название приложения, его версию, а также различные компоненты приложения.
В корневой папке проекта создайте файл app.yaml со следующим содержимым:
Первые четыре реквизита определяют: название приложения, его версию, тип среды исполнения, версию используемого API.
Блок, начинающийся с элемента handlers, определяет коллекцию обработчиков http-запросов, каждый обработчик начинается с дефиса. В нашем случае все запросы обрабатываются объектом app скрипта main.py, кроме тех, что адресованы к каталогам css и img, эти папки содержат статические ресуры, о чем и указано в конфигурационном файле.
Блок, начинающийся с элемента libraries, определяет библиотеки, подключаемые к web-приложению, в нашем случае подключается библиотека jinja версии 2.6, используемая для реализации шаблонов отображения страниц.
Блок, начинающийся с элемента libraries, определяет библиотеки, подключаемые к web-приложению, в нашем случае подключается библиотека jinja версии 2.6, используемая для реализации шаблонов отображения страниц.
Создание простого контроллера для отображения главной страницы
Простой контроллер только отображает главную страницу, применяя к ней шаблон оформления, да и все. Но таким образом можно реализовать и нормальные контроллеры, выполняющие различные полезные действия.
Строки, начинающиеся с import, подключают используемые библиотеки.
Класс MainPage, унаследованный от webapp2.RequestHanlder, определяет метод get, ответственный за обработку запроса. Метод создает шаблон на основе html-файла, описываемого ниже, и передает результат генерации страницы на основе шаблона в объект http-ответа.
Строка, определяющая объект app, содержит определение правил маршрутизации запроса http-запроса, из этого определения видно, что запрос к корневому каталогу ("/") должен обрабатываться классом Main.
Последняя строка создает окружение jinja для генерации страниц из шаблонов.
Класс MainPage, унаследованный от webapp2.RequestHanlder, определяет метод get, ответственный за обработку запроса. Метод создает шаблон на основе html-файла, описываемого ниже, и передает результат генерации страницы на основе шаблона в объект http-ответа.
Строка, определяющая объект app, содержит определение правил маршрутизации запроса http-запроса, из этого определения видно, что запрос к корневому каталогу ("/") должен обрабатываться классом Main.
Последняя строка создает окружение jinja для генерации страниц из шаблонов.
Создание главной страницы
- В каталоге проекта создайте каталог pages, в ней будем размещать страницы нашего одностраничного web-приложения.
- В каталоге pages создайте файл main.html со следующим содержимым:
Страница представляет собой описание блоков шаблона страницы, у нас два блока: title и body.
Создание шаблона отображения страниц
Будем отображать главную страницу с помощью шаблона Simplex, а возьмем его отсюда http://www.oswd.org/design/preview/id/2552. Шаблон состоит из трех файлов:
- html -страница,
- css-стиль,
- изображение, используемое для рисования рамок.
- В папке проекта создадим папки templates, css и img для хранения шаблонов html-страниц, листов стилей и изображений соответственно.
- В папку css положим лист стилей style.css.
- В папку img положим файл изображения bg.gif.
- В папку templates положим файл index.html и переименовываем его в simplex.html.
- В файле simplex.html находим строку, начинающуюся с <link href="style.css" и меняем значение реквизита href на "../css/style.css".
- Теперь в файле css/style.css меняем путь к файлу картинки на "../img/bg.gif".
- Добавим в шаблон точки вхождения блоков страницы, они отмечены конструкциями, вида: {% block [имя блока] %}{% endblock %}, в нашем случае их две под названиями title и body, шаблон должен выглядеть следующим образом:
Запуск web-приложения
Для запуска приложения выберите пункт меню helloworld из кнопки Run. После появления надписи "Running application dev~helloworld on port 8080: http://localhost:8080", откройте введите адрес http://localhost:8080 в адресную строку браузера.
Сейчас приложение запущена на локальном компьютере, это удобно в процессе разработки и отладки приложения. После завершения разработки необходимо опубликовать приложение в облаке Google AppEngine. Эта процедура несложна и аналогична созданию кнопки запуска приложения, при этом используется строка запуска скрипта: appcfg.py update ${workspace_loc}/helloworld