Hlavní navigace

Aplikační server Zope (2)

Lukáš Zapletal 2. 7. 2002

Zope je RAD nástroj pro tvorbu webových aplikací. A obsahuje webový i aplikační server. A databázový server. A session management, týmovou spolupráci či verzování. A kešování a poštovní služby. A to jste ještě opravdu neviděli!

Kdyby DTML umožňoval pouze vkládat metody a jiné proměnné do dokumentu, asi bychom toho moc neudělali. DTML nabízí víc. V DTML lze jednoduše používat proměnné. Už ne tak jednoduše je lze vytvářet nebo modifikovat, ale to nám nevadí, protože chceme (znovu opakuji) oddělit logiku od presentace. Například takové zpracování formuláře je typickým úkolem pro DTML. Pokud na předchozí stránce byla například pole jméno, adresa a telefon, může takový DTML objekt zpracovávající data vypadat takto:

<dtml-var standard_html_header>

<dtml-if jmeno>

    <dtml-call expr="pridejZaznam(jmeno, adresa, telefon)">

    <h1>Děkujeme pane/paní <dtml-var jmeno></h1>

    <p>Vaše iniciály byly zařazeny do naší
    databáze. Brzy vás kontaktuje náš
    obchodní zástupce. Těšíme se na spolupráci.</p>

<dtml-else>

    <p>Prosím vyplňte "jméno" na předchozí stránce.</p>

<dtml-endif>

<dtml-var standard_html_footer>

DTML tedy poskytuje jednoduché prvky pro je větvení (dtml-if, dtml-unless), vložení proměnné (dtml-var), jmenné prostředí pro proměnné (dtml-with), zavolání metody nebo pythonovského kódu (dtml-var, dtml-call, pro kód je možno použít atribut expr) a iteraci přes objekty (dtml-in). DTML nabízí i jednoduchou obsluhu výjimek (dtml-raise, dtml-try), posílání elektronické pošty (dtml-sendmail) a také hiearchické zobrazování dat do HTML stromů (dtml-tree), což je poměrně často používaná věc. V příkladu je volána metoda pridejZaznam, která provede vložení do SQL databáze. Protože je však tento úkon častý, byly vyvinuty ZSQL metody.

ZSQL metody jsou velmi podobné DTML metodám. Mají ale několik věcí navíc a především se nepoužívají pro vytváření HTML dokumentu, ale SQL příkazu. V ZSQL metodě můžeme využít všechny DTML příkazy plus ještě několik speciálních pro SQL, které usnadňují char escaping a přechod mezi různými SQL servery. Každá ZSQL metoda musí mít connection, kterou má použít. Před vytvořením ZSQL metody tedy musíte vytvořit objekt Connection. Pokud jste si nainstalovali některé externí připojovací objekty (ZMySql, ZPySql…), můžete je použít. Pokud ne, Zope obsahuje jednoduchý SQL server přímo v sobě. Jmenuje se Gadfly a můžete jej použít pro vývoj. Druhou věcí, kterou musejí ZSQL metody obsahovat, je seznam parametrů, které převezmou z nadřazeného prostředí. Do vlastního těla se napíše přímo příkaz. V našem příkladě by to byly tři parametry: jmeno, adresa a telefon. Tělo metody by mohlo být následující:

INSERT INTO ZAKAZNICI (JMENO, ADRESA, TELEFON) VALUES (
    <dtml-sqlvar JMENO type="nb">,
    <dtml-sqlvar ADRESA type="string">,
    <dtml-sqlvar TELEFON type="string">

)

Potom již stačí v DTML pomocí dtml-call ZSQL metodu zavolat, ta si převezme dané parametry a provede akci. Toto je nesmírně mocný nástroj, neboť lze tak velmi rychle napsat databázovou aplikaci. Na přiloženém obrázku vidíme jednu takovou obsáhlejší ZSQL metodu.

Pokud DTML a ZSQL již na některý úkon nestačí, musíte povolat skript. Skript je opět dokument, na který se dá nahlížet jako na metodu. Má určité parametry a může vrátit výsledek. Jeden takový skript můžete vidět na obrázku. Ve skriptech můžeme používat plnohodnotný Python se všemi jeho výhodami a knihovnami. Můžeme si také instalovat knihovny vlastní.

Téměř každá webová aplikace bude dříve nebo později potřebovat sessions. Session neboli sezení je jakési datové prostředí, v němž se ukládají proměnné v rámci uživatelského sezení. K serveru může být připojeno několik uživatelů a aplikace si musí pamatovat mnoho věcí, například poslední hledané slovo v sekci vyhledávání v nějakém informačním systému. A právě k tomu slouží sessions.

Zope pracuje se sessions naprosto transparentně a v implicitní instalaci je již na sessions připraven. Pokud však chcete sezení upravit k obrazu svému, odkážu vás na nápovědu a dokumentaci. Hledejte tyto tři objekty: Browser ID Manager (vrstva mezi prohlížečem a serverem), Transient Object Container (datové prostředí pro proměnné) a Session Data Manager (místo, kam se proměnné ukládají po ukončení zpracovávání HTTP požadavku).

Pokud tedy máte sezení nastaveno, můžete ihned začít pracovat. Magický objekt má překvapivý název SESSION. Ve skriptech s ním pracujete jako s obyčejným pythonovským slovníkem:

session=context.REQUEST.SESSION

# práce s obyčejnými proměnnými je jasná
count = session['user counter']
session['visited entry page'] = true


# pro uložení seznamů a slovníků se používá tento trik
list = session['shopping cart']
list.append('item 244')
list.append('item 584')
session['shopping cart'] = list

Daleko zajímavější je ovšem použití přímo v DTML (v ZPT to jde samozřejmě také, o tom později):

<dtml-with SESSION mapping>
    <dtml-call IncrementCounter>
    <p>Tuto stránku jste již navštívil(a)
    <dtml-var counter> krát.</p>

</dtml-with>

Zope nabízí kompletní agendu autentifikace a autorizace. Pro nezasvěcené: autentifikace = kdo jsem, autorizace = co mohu provádět. Ze zkušenosti vím, že první kroky v rozsáhlejším webovém projektu vedou právě k přihlašování a odhlašování uživatelů, a využitím vlastností, které Zope nabízí, toho lze dosáhnout velmi snadno. Aplikace je navíc bezpečná, protože Zope je již prověřeným systémem. Zope nabízí kompletní agendu vedení účtů, můžete vytvářet skupiny, zřizovat administrátory skupin, zkrátka naplno využít hotovou věc, kterou byste jinak museli pracně vytvářet. Všechna nastavení si Zope uchovává ve své objektové databázi. Velice snadno se tak dá vytvořit například jednoduchý portál nebo diskusní board.

Příště si něco povíme o ZPT (Zope Page Templates), které nahrazují DTML. Doporučuji však navštívít internetovou stránku serveru Zope. Naleznete tam spoustu zajímavostí včetně databáze produktů, což je obdoba CPAN archivu pro Perl. Produkt je zkrátka soubor, který se po nahrání do adresáře „import“ nainstaluje a je okamžitě připraven k práci. Pokud produkty vyžadují SQL podporu, jsou obvykle nakonfigurovány s Gadfly databází, takže je můžete hned otestovat. Je libo diskusní board, e-obchod, publikační systém? Vše na stránkách naleznete. A kolik že to všechno stojí? Jen váš čas.

Odkazy

Zope.org

Našli jste v článku chybu?

4. 7. 2002 16:02

hello_world.stx (neregistrovaný)

free zope hosting na http://www.freezope.org/ nebo http://www.nipltd.net/Free mozna i jinde...

2. 7. 2002 23:57

O. Auda (neregistrovaný)

Webhosting ZOPE tady existuje, např. viz http://www.aow.cz/webhosting#zope

Hostujeme projekty libovolné velikosti - nabízíme i vlastní instalaci ZOPE (lib. verze) jen pro vás!

Měsíční poplatek od 300 Kč za kompletní služby pro jednu doménu je, předpokládám, "rozumný peníz".





Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Manželka je bio, ale na sex moc není

Manželka je bio, ale na sex moc není

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: Na koho se v Křišťálové Lupě nedostalo?

Na koho se v Křišťálové Lupě nedostalo?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Vitalia.cz: Často čůrá a má žízeň? Příznaky dětské cukrovky

Často čůrá a má žízeň? Příznaky dětské cukrovky

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka