V minulém dílu seriálu jsme viděli nové možnosti typu cesta. Dnes si ukážeme tento typ v dalších praktických příkladech. Zkuste si následující zdrojový kód uložit do šablony typcesta:
<p>Toto je <b tal:replace="here/title">Název složky</b></p> <p>Jsme na adrese: <b tal:replace="request/URL">URL</b></p> <p>Přihlášený uživatel:
<b tal:replace="user/getUserName">Uživatel</b></p>
Šablonu typcesta můžete volat na všechny objekty ve složce /test.
http://localhost:8080/test/typcesta
http://localhost:8080/test/t1/typcesta
http://localhost:8080/test/t1/obrazek1/typcesta pokud máte v této složce obrázek s názvem obrazek1
http://localhost:8080/test/zisk/typcesta
První řádek šablony typcesta používá pro umístění příkazu ZPT značku <b>. Ve zdrojovém kódu dynamické verze této stránky se ovšem značka <b> neobjeví, protože jsme použili tal:replacemísto tal:content. Když už je tedy značka <b> zbytečná, můžeme se bez ní obejít, aby nemátla webdesignera (ve statické verzi by byl text tučný, v dynamické nikoliv, a to by bylo docela matoucí). S výhodou lze použít značku <span>, která byla už dávno zavedena do normy jazyka HTML jako obecná strukturální značka. Obsah značky <span> totiž zobrazují i velmi staré prohlížeče, které nerozumějí parametrům definovaným pro tuto značku. Značka <span> nijak nemění vzhled textu.
Druhý řádek používá cestu request/URL pro zobrazení aktuální adresy požadavku HTTP. Objekt request je hodně zajímavý a často využívaný, a to nejen v Zope, ale obecně ve webovém programování. Reprezentuje požadavek HTTP, odeslaný klientským softwarem, tedy zpravidla webovým prohlížečem. Požadavek HTTP je vlastně žádost o zaslání webové stránky. Klientský software vkládá do požadavku různé zajímavé informace, další užitečné informace se v požadavku ocitnou i díky serverové straně, například přes Zope nebo případně z webového serveru Apache, jenž bývá někdy předřazen před samotný Zope.
My se podíváme, jak tento objekt vypadá konkrétně v Zope. Objekt requestmimo jiné zpřístupňuje také cesty request/form/název_formulářové_proměnné a request/cookies. Tyto cesty jsou dále adresovatelné. Zkuste například cestu request/cookies/tree-s. Objeví se obsah cookie (sušenky) tree-s, kterou používá samotné Zope.
Podobně můžete zobrazit request/form/prijmeni, pokud by požadavek HTTP obsahoval formulářovou proměnnou prijmeni. Protože momentálně žádný webový formulář nemáme, můžeme simulovattento požadavek tak, že vložíme parametr přímo do URL:
http://localhost:8080/test/typcesta?prijmeni=Novak
Požadavek HTTP je vůbec zajímavý. Zkuste vytvořit šablonu s názvem třeba req, která vám ho zobrazí celý:
<hr> <span tal:replace="structure request">požadavek HTTP</span> <hr>
Zobrazení celého požadavku HTTP je mimochodem velice užitečná metoda ladění. Výše uvedený řádek používejte jako první pomoc, jakmile se váš program nechová podle předpokladů.
Rekapitulace
Předchozí text se hemží zkratkami a názvy technologií, které tvoří Zope. Vyznat se v tomto bludišti není právě snadné. Pro vaše pohodlí uvedu jejich přehled, včetně technologií, které budou představeny v budoucích pokračováních. V příštím pokračování se na některé technologie podíváme blíže, aniž bychom ztratili ze zřetele centrum našeho zájmu – šablony ZPT.
Název |
Název česky |
Popis |
Použití |
ZPT, Zope Page Templates |
Šablony stránek |
Prezentační jazyk Zope |
Prezentace dat získaných přímo ze ZODB, ze skriptů Python, ZSQL, ZCatalog a z Externích metod |
ZMI | ZMI |
Ovládání Zope |
Díky ZMI (Zope Management Interface) se Zope ovládá přes webový prohlížeč. |
Python Script |
Skripty v Pythonu |
Logický jazyk Zope |
Logická příprava dat pro prezentaci. Zpracování dat. Vhodné pro krátké a středně velké programy v Pythonu. |
External Methods |
Externí metody |
Logický jazyk Zope | Mohou přímo volat libovolné externí programy. Vhodné pro středně velké a rozsáhlé programy v Pythonu. |
Products |
Produkty |
Hotové stavební cihly |
Hotové prvky, které mohou sloužit jako stavební prvky (prefabrikáty) pro vaše aplikace. |
ZClass |
ZClass |
Implementace dědičnosti |
Rychlý návrh aplikací a vyzkoušení koncepcí. |
DTML |
DTML |
Prezentační jazyk s logickými prvky | V minulosti používán nejen k prezentaci, ale i k programování. Dnes v podstatě zastaralý. |
ZSQL |
ZSQL |
Rozhraní pro relační databáze |
Relační databáze SQL můžete v Zope používat pomocí mini-jazyka ZSQL. |
ZEO |
ZEO |
Clustering a škálování |
Zope se škáluje zakoupením většího množství serverů, libovolně zeměpisně rozložených. Technologie ZEO se postará o rozdělení zátěže mezi tyto servery. |
ZODB | ZODB |
Databáze |
Objektová databáze pro Zope. |
ZCatalog |
ZCatalog | Indexování databáze |
Databáze ZODB používá ZCatalog pro tvorbu indexů a rychlé vyhledávání v datech. ZCatalog umožňuje i fulltextové vyhledávání s operátory AND, OR apod. |
Version |
Verze |
Undo pro ZODB |
Populární funkce Undo (krok zpět) na steroidech. |
Acquisition |
Získávání |
Funkce |
Zrychluje, zlevňuje a zjednodušuje programování dynamických stránek. |
Caching |
Caching |
Cache pro webové aplikace |
Pro úsporu času centrálního mikroprocesoru umí Zope cachovat často používané segmenty dynamických stránek. |