2 Приступая к работе
2.1 Установка виртуального окружения
Прежде чем мы начнем работать над нашим приложением, хорошей идей будет настроить окружение питона, которое отделено от системного питона, предустановлого с каким-то используемым вами дистрибутивом linux (в моем случае это Ubuntu Gutsy) (А в моем это OpenSUSE 10.3 - прим. перев. :). Создав "виртуальную" среду питона, мы сможем избежать множества различных проблем, связанных с системным питоном, таких как: неработающие пакеты, конфликтующие зависимости и т.д.).
Виртуальную среду питона можно легко создать с помощью скрипта virtualenv.py, доступного по адресу: http://svn.colorstudy.com/virtualenv/trunk/virtualenv.py. Подробнее о том, что делает этот скрипт, можно почитать на странице pypi: http://pypi.python.org/pypi/virtualenv.
Загрузите этот скрипт в вашу домашнюю директорию и создайте новое окружение с именем sandbox:
$ wget http://svn.colorstudy.com/virtualenv/trunk/virtualenv.py ~/
$ python ~/virtualenv.py sandbox
В качестве альтернативы вы можете поместить эту среду в любое место, куда вам захочется, и назвать так, как вам нравится! Эта папка сейчас имеет директорию bin с новым исполняемым файлом python и скриптом easy_install. Еще там лежит bash-скрипт для помещения вашей оболочки в новую среду, так что вы не должны набирать полный путь для запуска питона из нашего окружения. Давайте-ка запустим это:
$ cd sandbox
$ source bin/activate
После этого мы можем убедиться в том, что это все работает:
(sandbox)$ which python
/home/pcardune/sandbox/bin/python
Начиная с этого момента, везде, где вы увидите запущенную shell-команду, подразумевается, что вы запустили виртуальное окружение.
2.2 Использование zopeproject
Было бы неплохо начать работу с простейшего каркаса приложения, так чтобы не нужно было беспокоиться о написании всей конфигурации с нуля. К счастью, для этого Philipp von Weitershausen уже написал замечательное средстов, названное zopeproject
zopeproject можно установить с помощью скрипта easy_install. Для этого просто наберите:
$ easy_install zopeproject
Теперь создадим новый проект под названием zcontact. zopeproject создаст всю основную конфигурацию, которая вам понадобится для того, чтобы запустить пустое zope-приложение и войти под аккаунтом администратора. Вас попросят ввести имя и пароль к административному аккаунту (который можно будет изменить в любое время), а также расположение для установки необходимых компонентов.
$ zopeproject zcontactEnter user (Name of an initial administrator user): manager
Enter passwd (Password for the initial administrator user): zcontact
Enter eggs_dir (Location where zc.buildout will look for and place packages) ['/home/pcardune/buildout-eggs']: eggs
Этот шаг может занять несколько
минут, так как будет загружаться много кода и некоторый из них будет откомпилирован. Пока вы ждете, я настоятельно рекомендую поглядеть документацию по zopeproject, чтобы лучше понять, чего он там делает.
2.3 Запуск сервера
Когда все будет завершено вы можете зайти прямо туда (а можно попрыгать сначала и поплясать драмак - прим. перев. :) и запустить ваше зарождающееся приложение, которое по умолчанию запустится на 8080 порту:
$ cd zcontact
$ ./bin/paster serve deploy.ini
Starting server in PID 23818.
serving on http://127.0.0.1:8080
Сейчас вы должны получить пустой zope-экран, который выглядит примерно так:
Файл deploy.ini, передаваемый команде ./bin/paster, указывает опции для запускаемого сервера, например, такие как настройки порта. zopeproject также генерирует файл debug.ini, который включает WSGI-фильтр для управления ошибками. Даже когда вы запустились с ошибками, вы можете использовать конфигурацию debug.ini для отслеживания кода, как он запускается, прямо в вашем браузере!
2.4 Регулировка настроек безопасности
Чтобы упростить себе работу в этом руководстве, мы настроим права, генерируемые zopeproject'ом, так, чтобы нам не пришлось заботиться о них в дальнейшем. Добавим следующие строчки в файл site.zcml, который находится в корневой директории вашего приложения:
Это даст полный доступ ко всему без ограничений анонимным пользователям.
Перед тем как окунуться в мир пакетов z3c.*, мы должны иметь некий объект, с которым мы будем играться. Поскольку ZContact'у полагается быть менеджером контактов, давайте начнем с объекта контакт. Чтобы он был попроще, у нас будет всего два поля: имя и фамилия (first name и last name).
Примечание
Весь исходный код располагается в папке zcontact/src/zcontact, так что zcontact/src/zcontact/interfaces.py можно импортировать как import zcontact.interfaces.
2.5.1. Интерфейс IContact
1 | import zope.interface |
Теперь по-быстренькому мы можем сделать нашу реализацию. Откройте contact.py и добавьте следующее:
1 | import zope.interface |
Еще нам нужно зарегистрировать класс Contact в zcml и настроить права для доступа к атрибутам. Просто добивим следующее в файл src/zcontact/configure.zcml
Комментариев нет:
Отправить комментарий