TurboGears - Зависимости
Проект TurboGears содержит следующие каталоги -
Config - Откуда зависит установка и настройка проекта
Controllers - Все контроллеры проекта, логика веб-приложения
i018n - Файлы перевода для поддерживаемых языков
Lib - Служебные функции и классы Python
Model - Модели базы данных
Public Static Files - CSS, JavaScript и изображения
Templates - Шаблоны, предоставляемые нашими контроллерами.
Tests - Выполнен набор тестов.
Websetup - Функции для выполнения при настройке приложения.
Как установить проект
Теперь этот проект необходимо установить. Аsetup.pyуже предоставлен в базовом каталоге проекта. При выполнении этого скрипта устанавливаются зависимости проекта.
Python setup.py develop
По умолчанию во время настройки проекта устанавливаются следующие зависимости:
- Beaker
- Genshi
- zope.sqlalchemy
- sqlalchemy
- alembic
- repoze.who
- tw2.forms
- tgext.admin ≥ 0.6.1
- WebHelpers2
- babel
После установки начните обслуживать проект на сервере разработки, выполнив следующую команду в оболочке -
Gearbox serve –reload –debug
Следуйте приведенной выше команде, чтобы показать готовый пример проекта. открытоhttp://localhost:8080в браузере. Этот готовый пример приложения дает краткое введение о самом фреймворке TurboGears.
В этом проекте Hello контроллер по умолчанию создается в каталоге контроллеров как Hello/hello/controllers.root.py. Разрешите намmodify root.py со следующим кодом -
from hello.lib.base import BaseController
from tg import expose, flash
class RootController(BaseController):
movie = MovieController()
@expose()
def index(self):
return "<h1>Hello World</h1>"
@expose()
def _default(self, *args, **kw):
return "This page is not ready"
Как только базовое рабочее приложение будет готово, в класс контроллера можно добавить больше представлений. вMycontroller класс выше, новый метод sayHello()добавлен. В@expose() декоратор прикрепляет /sayHelloURL на него. Эта функция предназначена для приема имени в качестве параметра URL-адреса.
После запуска сервера командой 'gearbox serve', http://localhost:8080. Сообщение Hello World будет отображаться в браузере, даже если будут введены следующие URL-адреса:
http://localhost:8080/
http://localhost:8080/index
Все эти URL-адреса сопоставлены RootController.index()метод. В этом классе также есть_default()метод, который будет вызываться всякий раз, когда URL-адрес не сопоставлен с какой-либо конкретной функцией. Ответ на URL-адрес отображается на функцию декоратором @expose ().
Можно отправить параметр открытой функции из URL-адреса. Следующая функция считывает параметр имени из URL-адреса.
@expose()
def sayHello(self, name):
return '<h3>Hello %s</h3>' %name
Следующий вывод будет виден в браузере как ответ на URL-адрес - http://localhost:8080/?name=MVL
Hello MVL
TurboGears автоматически сопоставляет параметры URL-адреса с аргументами функции. Наш класс RootController унаследован от BaseController. Это определяется какbase.py в lib folder приложения.
Его код следующий -
from tg import TGController, tmpl_context
from tg import request
__all__ = ['BaseController']
def __call__(self, environ, context):
tmpl_context.identity = request.identity
return TGController.__call__(self, environ, context)
TGController.__call__ отправляет в метод контроллера, на который направлен запрос.