Проект TurboGears содержит следующие каталоги —
-
Конфиг — Где находится настройка проекта и конфигурация
-
Контроллеры — все контроллеры проекта, логика веб-приложения
-
i018n — файлы переводов для поддерживаемых языков
-
Lib — служебные функции и классы Python
-
Модель — База данных моделей
-
Общедоступные статические файлы — CSS, JavaScript и изображения
-
Шаблоны — Шаблоны, предоставляемые нашими контролерами.
-
Тесты — набор тестов сделано.
-
Websetup — функции, выполняемые при настройке приложения.
Конфиг — Где находится настройка проекта и конфигурация
Контроллеры — все контроллеры проекта, логика веб-приложения
i018n — файлы переводов для поддерживаемых языков
Lib — служебные функции и классы Python
Модель — База данных моделей
Общедоступные статические файлы — CSS, JavaScript и изображения
Шаблоны — Шаблоны, предоставляемые нашими контролерами.
Тесты — набор тестов сделано.
Websetup — функции, выполняемые при настройке приложения.
Как установить проект
Этот проект теперь должен быть установлен. Файл setup.py уже предоставлен в базовом каталоге проекта. Зависимости проекта устанавливаются при выполнении этого скрипта.
Python setup.py develop
По умолчанию следующие зависимости устанавливаются во время настройки проекта:
- мензурка
- Genshi
- zope.sqlalchemy
- SQLAlchemy
- перегонный куб
- repoze.who
- tw2.forms
- tgext.admin ≥ 0.6.1
- WebHelpers2
- галдеж
После установки начните обслуживать проект на сервере разработки, введя следующую команду в оболочке —
Gearbox serve –reload –debug
Следуйте вышеупомянутой команде, чтобы служить готовым примером проекта. Откройте http: // localhost: 8080 в браузере. Этот готовый пример приложения дает краткое представление о самой платформе TurboGears.
В этом проекте Hello контроллер по умолчанию создается в каталоге контроллеров как Hello / hello / controllers.root.py . Давайте изменим 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 () присоединяет к нему URL-адрес / sayHello . Эта функция предназначена для принятия имени в качестве параметра из URL.
После запуска сервера с помощью команды «gearbox serve» http: // localhost: 8080 . Сообщение Hello World будет отображаться в браузере, даже если введены следующие URL —
HTTP: // локальный: 8080 /
HTTP: // локальный: 8080 / индекс
Все эти 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 приложения.
Его код следующий:
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__ отправляет методу Controller, на который направляется запрос.