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__ отправляет в метод контроллера, на который направлен запрос.