Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Šablony stránek pro Zope: závěr

V posledním dílu seriálu se podíváme, jak se z Nákupního košíku odstraňují položky, a zamyslíme se nad budoucností Zope a souvisejících technologií.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Pokud jste párkrát přidali zboží do košíku, možná vás napadlo zkusit nějakou zvrhlost – co třeba zadat do objednávky záporné množství? Objednávka se odečte, což je celkem rozumné. Jenže když zadáte dostatečně velké (nebo malé? jsem zmaten :-) záporné číslo, bude objednáno záporné množství… což je bezva způsob, jak si vylepšít skóre na vaší kreditce… protože majitel webového obchodu vám rázem bude dlužit peníze.

Pěkný příklad známé poučky webového programování „Nikdy nedůvěřuj údajům, které zadal uživatel!“. Řešení tohoto problému nechám na vás. Můžete se rozhodnout lišácky použít na vhodném místě funkci abs(), ať je podvodník potrestán zvýšením objednávky, nebo můžete zobrazit stránku s textem „Vy…vy… vy… vy jeden VY!“.

Mazání položek – podruhé

jedenáctém dílu tohoto seriálu byla řeč o skriptu getItems v situaci s prázdným košíkem. Teď máme v košíku nějaké zboží, a tak se znovu vrátíme na začátek probíráného úseku šablony index_html (tedy hned za značkou <div…>).
Podmínka tal:condition=„cu­rrent_items“ je tentokrát splněná, protože skript currentItems vrací neprázdný seznam. Nebudu urážet vaši inteligenci rozebíráním skriptu currentItems, snad jen vypíchnu, že úvodní řádek session=contex­t.REQUEST.SES­SION je standardní způsob, jak načíst relaci do skriptu a pohodlně s ní pracovat.

session=context.REQUEST.SESSION
quantities=session.get('items', {})
items=[]
for id, quantity in quantities.items():
   item=container.getItem(id)
   item['quantity']=quantity
   items.append(item)
return items

Výsledek skriptu getItems je prezentován v tabulce bezprostřeně pod značkou <form…>. Všimněte si, že položka price byla dodána skriptem getItem, který byl podrobněji popsán ve dvanáctém dílu seriálu. Teď se ke skriptu getItem vrátíme, abychom popsali větev přeskočenou ve dvanáctém dílu:

item=items.get(id)
if item is None:
    return None
item['id']=id
return item

Tento úsek vlastně pouze zplacatí jeden záznam z košatého slovníku slovníků definovaného na začátku skriptu getItems. Vytáhne požadovaný slovník, přidá k němu jeho id jako další výraz slovníku a výsledek vrátí volajícímu programu. Takové transformace jsou v Pythonu velmi časté: slovník do seznamu, seznam do slovníku a jiné akčnější úkoly se stanou po troše praxe frázemi, které sypete z rukávu.1

Skript getTotal volaný na konci tabulky je opět triviální, stejně jako skript deleteItems, který je akcí formuláře.

Tím je popis Nákupního košíku uzavřen.

Konec a šáteček

Pokud jste vydrželi až sem, tak zírám. Délka popisu Nákupního košíku by mohla netrpělivé svádět k myšlence, že jednodušší je stáhnout si nějaký hotový program s názvem „nákupní košík“ a vlepit ho do svých stránek HTML. Samozřejme, je to řešení. Také můžete svůj webový obchod hostovat u komerčního poskytovatele a nemusíte programovat vůbec. Zope je o něčem jiném. Oddělení Public Relation firmy Zope Corp. v minulosti bohužel trošku zavádějícím způsobem tvrdilo, že Zope je hotové řešení, které funguje po vybalení z krabice jako dokonalé webové stránky. Ve skutečnosti je Zope „pouhý“ framework, určený pro vývoj aplikací šitých na míru. Podporuje i rapid prototyping a rapid application development, ale není to konzerva s hotovým řešením. Podobně ani například Zope Content Management Framework (CMF) není a nikdy nebyl hotovým systémem pro řízení obsahu, ale jen nadstavbou pro vytváření takových systémů. Zope je zkrátka stavebnice a bez fantazie a tvořivosti se neobejdete.

Pokud spěcháte, není vše ztraceno: množství bezplatně dostupných tzv. Produktů pro Zope lze použít a okamžitě tak vyřešit nejběžnější úkoly bez programování, pro zájemce o komunitní stránky je tu báječný hotový systém Plone, jehož vzhled lze dokonale uzpůsobit a nemít tedy stejné stránky jako desítky jiných medvídků gumídků :-)

Zope se nadále divoce vyvíjí. Zatímco drtivou většinu programátorské práce na verzi Zope 1.x a Zope 2.x odváděla mateřská firma Zope Corp., koncem tohoto nebo počátkem příštího roku bude vydána verze 3, kde je příspěvek členů komunity mnohem významnější. Bude představeno množství nových technologií a vývoj starých technologií jako DTML a ZClasses bude zastaven. Ale neztratíte kompatibilitu – staré programy bude možné provozovat i v Zope 3.

davame_internetu_obsah
       

Protože v několika posledních článcích skoro nikdo neposílal diskusní příspěvky k tomuto seriálu, myslím, že je nejvyšší čas seriál ukončit. Prosím teď mlčící většinu, aby se vyjádřila, zda by stála o další články o Zope a souvisejících věcech 2.  Slíbil jsem Johance, že budou vtipnější.


1

Když vás transformace dat procedurálním stylem znudí, vždy se můžete zabavit výletem do říše funkcionálního programování, řízeného zabudovanými funkcemi map, reduce a filter. Nefundamentalis­tický a maximálně užitečný úvod do zpracování textů najdete v knize Text Processing in Python od Davida Mertze.  Ten odkaz nevede na Amazon.com, kde lze knihu zakoupit za 50 USD, ale na web laskavého pana Mertze, kde si můžete knihu zdarma stáhnout. Na pláž je to ideální čtení!
2 Nebojte se, ne hned teď. Nejdřív můžu něco napsat v říjnu. Napište do diskuse, jaká témata by vás zajímala. Když nebude žádný zájem, nebudou žádné články!

Školení: Návrh a používání MySQL databáze

 

Naučte se používat jednu z nejrozšířenějších databází. Dozvíte se vše potřebné od návrhu až po samotné využití MySQL v projektech.

Školení pro všechny, kteří se chtějí naučit efektivně pracovat s MySQL nebo se v práci s touto databází zlepšit.

Přihláška a podrobné informace

Ohodnoťte jako ve škole:
Průměrná známka 3,23

Přehled názorů

zadne prispevky
Petr Chloupek 25. 7. 2003 02:08
Nový
Proc se zbavuji DTML
Tomas 25. 7. 2003 09:49
Nový
└ 
Re: Proc se zbavuji DTML
Miloš Průdek 25. 7. 2003 15:45
Nový
Dalsie technologie
Laco 25. 7. 2003 09:51
Nový
bez titulku
martin 25. 7. 2003 13:25
Nový
└ 
Re:
Miloš Průdek 25. 7. 2003 15:50
Nový
 
├ 
Re:
Tomas 29. 7. 2003 09:01
Nový
 
│
└ 
Re:
Miloš Průdek 4. 8. 2003 14:53
Nový
 
└ 
Re: Plone a CMF clanek
David Pravec 3. 8. 2003 23:54
Nový
 
 
└ 
Re: Plone a CMF clanek
Miloš Průdek 4. 8. 2003 14:51
Nový
radsej viac ako menej
ufon 26. 7. 2003 20:18
Nový
Celkově se mi to líbilo
Rock 28. 7. 2003 21:47
Nový
workflow
karel.kabelka@post.cz 11. 4. 2005 13:38
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem