TurboGears - шаблоны обслуживания
Событие, хотя содержимое HTML может быть возвращено в браузер, для более продвинутого вывода всегда предпочтительнее использование механизма шаблонов. В полноэкранном проекте, запущенном с помощью gearbox, Genshi включен в качестве средства визуализации шаблонов по умолчанию. Однако в минимальном приложении Genshi (или любой другой шаблонизатор, например jinja) должен быть установлен и включен. Механизм шаблонов Genshi позволяет писать шаблоны в чистом xhtml и проверять их, чтобы обнаруживать проблемы во время компиляции и предотвращать обслуживание сломанных страниц.
Шаблоны обозначены пунктирной нотацией. В нашем проекте Hello предоставляется каталог шаблонов для хранения шаблонов веб-страниц. Следовательноsample.html будет называться hello.templates.sample(расширение не упоминается). TurboGears отображает этот шаблон через декоратор экспонирования, чтобы связать с ним метод контроллера с помощьюtg.render_template() функция.
Открытая функция контроллера возвращает объект словаря Python. Этот объект словаря, в свою очередь, передается в связанный шаблон. Заполнители в шаблоне заполняются словарными значениями.
Для начала давайте отобразим веб-страницу с помощью простого html-скрипта. Открытый контроллер возвращаетnull dictionary object поскольку мы не намерены отправлять какие-либо данные для анализа внутри HTML-скрипта.
Как создать образец HTML
Наши sample.htmlприведен ниже. Убедитесь, что он хранится в каталоге шаблонов проекта.
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, Welcome to TurboGears!.</h2>
</body>
</html>
Добавить sample() функционировать в root.py и выставить через него файл sample.html.
@expose("hello.templates.sample")
def sample(self):
return {}
Следующий результат будет отображаться в браузере, когда URL http://localhost:8080/sample вводится после запуска веб-сервера.
Как упоминалось выше, объект словаря отправляется как набор параметров в шаблон Genshi. Этот шаблон содержит "заполнители", которые динамически заполняются параметрами, полученными от контроллера.
Давайте изменим sample() функция для отправки объекта словаря в образец шаблона.
@expose("hello.templates.sample")
def sample(self,name):
mydata = {'person':name}
return mydata
Создайте sample.html в папке шаблонов (templates\sample.html)
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, my name is ${person}!.</h2>
</body>
</html>
В приведенном выше HTML-коде ${person}заполнитель. Войтиhttp://localhost:8080/sample?name=MVLкак URL-адрес в браузере. Этот URL сопоставлен сsample()в нашем корневом контроллере. Он возвращает объект словаря. Это выбирается связанной страницей шаблона sample.html в каталоге шаблонов. Затем $ {person} заменяется на MVL на веб-странице.
Также можно получить доступ к данным HTML-формы в функции контроллера. HTML-форма используется для отправки данных формы.