TurboGears - szablony udostępniania
Zdarzenie, chociaż zawartość HTML może zostać zwrócona do przeglądarki, w celu uzyskania bardziej zaawansowanych wyników zawsze preferowane jest użycie silnika szablonów. W projekcie z pełnym stosem „szybkiego startu” przez gearbox, Genshi jest włączony jako domyślny renderer szablonów. Jednak w przypadku minimalnej aplikacji Genshi (lub inny silnik szablonów, taki jak jinja) musi zostać zainstalowany i włączony. Silnik szablonów Genshi pozwala na pisanie szablonów w czystym xhtml i weryfikuje je, aby wykrywać problemy w czasie kompilacji i zapobiegać wyświetlaniu uszkodzonych stron.
Szablony są określane za pomocą notacji z kropkami. W naszym projekcie Hello udostępniono katalog szablonów do przechowywania szablonów stron internetowych. W związku z tymsample.html będzie określany jako hello.templates.sample(rozszerzenie nie wymienione). TurboGears renderuje ten szablon za pomocą dekoratora expose, aby połączyć z nim metodę kontroleratg.render_template() funkcjonować.
Udostępniona funkcja kontrolera zwraca obiekt słownika języka Python. Ten obiekt słownika jest z kolei przekazywany do połączonego szablonu. Symbole zastępcze w szablonie są wypełnione wartościami słownikowymi.
Na początek wyświetlmy stronę internetową ze zwykłym skryptem html. Udostępniony kontroler zwraca pliknull dictionary object ponieważ nie zamierzamy wysyłać żadnych danych do analizy wewnątrz skryptu HTML.
Jak stworzyć przykładowy kod HTML
Nasz sample.htmlpodano poniżej. Upewnij się, że jest on przechowywany w katalogu szablonów projektu.
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, Welcome to TurboGears!.</h2>
</body>
</html>
Dodaj sample() funkcja w root.py i udostępnić za jego pośrednictwem plik sample.html.
@expose("hello.templates.sample")
def sample(self):
return {}
Poniższy wynik zostanie wyświetlony w przeglądarce, gdy adres URL http://localhost:8080/sample jest wprowadzany po uruchomieniu serwera WWW.
Jak wspomniano powyżej, obiekt słownika jest wysyłany jako zbiór parametrów do szablonu Genshi. Ten szablon zawiera „place holders”, które są dynamicznie wypełniane parametrami otrzymywanymi z kontrolera.
Zmieńmy sample() funkcji, aby wysłać obiekt słownika do przykładowego szablonu.
@expose("hello.templates.sample")
def sample(self,name):
mydata = {'person':name}
return mydata
Stwórz sample.html w folderze szablonów (templates\sample.html)
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, my name is ${person}!.</h2>
</body>
</html>
W powyższym kodzie HTML, ${person}jest symbolem zastępczym. Wchodzićhttp://localhost:8080/sample?name=MVLjako adres URL w przeglądarce. Ten adres URL jest zamapowany nasample()metoda w naszym kontrolerze głównym. Zwraca obiekt słownika. Jest to wybierane przez połączoną stronę szablonu sample.html w katalogu szablonów. $ {Person} jest następnie zastępowane przez MVL na stronie internetowej.
Możliwy jest również dostęp do danych formularza HTML w funkcji kontrolera. Formularz HTML służy do wysyłania danych formularza.