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

Hlavní navigace

Django: Závěr

Náš seriál se tímto dílem dostal na naprostý konec (což ovšem neznamená, že už by se o Djangu nedalo psát mnohem víc). Proto se zevrubně podíváme na několik součástí Djanga, na které se v předchozích dílech nedostalo, a také si ukážeme nějaké tipy a triky, které vám pomohou v další práci s tímto frameworkem.

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

Další zajímavá témata

Middleware

Tento pojem byl již několikrát v předchozích dílech tohoto seriálu použit. Nejedná se o nic jiného, než o posloupnost funkcí, které jsou zavolány mimo samotné zpracování pohledu a které ovlivňují objekty request a response. Tyto funkce mohou dělat takřka libovolnou činnost. Kupříkladu middleware ve výchozím projektu zajišťuje správu session a autentizaci.

Když bychom si chtěli napsat vlastní middleware, museli bychom si založit novou třídu a do ní umístit jednu nebo více metod podle vzoru. Tyto metody se liší okamžikem, kdy budou zavolány.

Syndikace obsahu

Syndikační formáty RSS a Atom, jež jsou založené na XML, se staly velice populárními. Umožňují uživatelům odebírat seznam změn na daném webu. V Djangu máme možnost jednoduše připojit syndikaci k libovolnému modelu. Stačí přidat URL mířící na pohled django.contrib.syndication.views.feed a tomu jako parametr poskytnout slovník s klíčem 'feed_dict'. Hodnota tohoto klíče musí obsahovat jednu nebo více kategorií (např. články, komentáře) příslušící potomkům třídy django.contrib.syndication.feeds.Feed. Pomocí jednoduchého dědění tříd si tak definujeme vlastnosti a obsah našeho syndikačního kanálu.

Ve výchozím nastavení se generuje kanál ve formátu RSS verze 2, což je možné jednoduše změnit, stejně jako další nastavení kanálu. Pro více informací o syndikaci nahlédněte do oficiální dokumentace.

Mapa stránek

Stejně jako formáty syndikace, i mapa stránek (sitemap) je postavena na XML. Umožňuje vyhledávacím robotům urychlit procházení stránek a hlídání změn. Po přidání položky 'django.contrib.sitemaps' do konfigurační konstanty INSTALLED_APPS nám stačí provázat pohled django.contrib.sitemaps.views.sitemap s nějakým URL a podobně jako u syndikace obsahu poskytnout slovník se zděděnými třídami. Tentokrát je potřeba třídy odvodit z django.contrib.sitemaps.Sitemap  a můžeme nastavit položky jako je priorita, frekvence indexování a čas poslední změny obsahu. Opět se doporučuji podívat na detailní popis v dokumentaci.

Více domén v jenom projektu

Pomocí aplikace django.contrib.sites můžeme provozovat projekt na několika doménách najednou a odlišovat jejich obsah. To může být užitečné v případech, že máme na různých doménách stejný obsah v různých jazycích nebo pokud dva weby sdílí velkou část stejného obsahu. Model django.contrib.sites.models.Site můžeme propojit se stávajícími modely a podle toho rozhodovat, jaký obsah se bude zobrazovat na určitých doménách.

Přesměrování

Django poskytuje i aplikaci pro přesměrování odkazů. Když chceme návštěvníkům zpřístupnit jeden obsah na více lokacích, stačí nám přidat do konfigurační konstanty INSTALLED_APPS položku 'django.contrib.redirects', poté na konec konstanty MIDDLEWARE_CLASSES položku 'django.contrib.redirects.middleware.RedirectFallbackMiddleware' a sesynchronizovat databázi. Zobrazí se nám v administraci rozhraní pro správu přesměrování. Tam máme možnost specifikovat adresy pro přesměrování.

Stránkování

Pomocí stránkování návštěvníkům zpřehledníme orientaci v modelu s mnoha položkami. Stačí v pohledu obalit objekty QuerySet třídou django.core.paginator.Paginator a nastavit, po kolika prvcích se má listovat a na které straně se teď nacházíme. Také můžeme použít nějaký z generických pohledů, které tuto funkci mají již zabudovanou. V obou případech musíme v šabloně vypsat navigaci, aby uživatel mohl procházet mezi jednotlivými stránkami.

Závěrečné rady

Snažte se zamezit opakování

Opakování je sice matkou moudrosti, ale v kódu je naprosto nevhodné. Předtím než začnete s vytvářením části projektu, promyslete si strukturu kódu a snažte se opakující se schéma zachytit do samostatných funkcí. Prostudujte si zkratky a snažte se je používat co nejčastěji. Co se týče odkazů, místo přímého zadávání cest lze využít v modelech dekorátor permalink a využívat v šablonách značku url . Aplikace se tak stane univerzálnější a když budeme chtít změnit strukturu odkazů, stačí nám editovat pouze soubor s definicí URL.

Využívejte už jednou napsaný kód

Správně napsanou aplikaci by nemělo být problém přenést do jiného projektu. Netýká se to jenom vlastního kódu. Při promýšlení určitého problému se nejprve podívejte, jestli ho už neřeší nějaká volně dostupná aplikace nebo kód není publikován na Django Snippets. Rozhodně se neostýchejte použít generické pohledy všude tam, kde to je jenom možné. Generické pohledy jsou napsány tak, aby obsloužily co nejvíce častých činností — s trochou snahy můžete i své vlastní pohledy psát natolik genericky, aby byly znovupoužitelné.

Django je napsané v Pythonu

Python obsahuje velké množství volně dostupných knihoven a při práci s Djangem lze využít libovolnou z nich. Kromě toho je Python postavený na objektově orientovaném programování a obsahuje i několik rysů funkcionálního, což by se mělo projevit i ve vašem kódu. Čím lépe Python znáte, tím budete lepší vývojář v Djangu.

Manuál je váš kamarád

Django má výbornou anglickou dokumentaci, která popisuje detailně jednotlivé moduly a ukazuje jejich použití na příkladech. Ucelená česká dokumentace zatím neexistuje, ale je možné, že časem vznikne v příslušné sekci na webu Djangoproject.cz.

Nebojte se zeptat

Pokud si s nějakým problémem nevíte rady nebo jenom potřebujete prodiskutovat nějaké řešení, neváhejte se zeptat komunity. I když zatím českých vývojářů v Djangu není hodně, velice rádi vám pomůžeme. Stačí poslat e-mail do diskuzní skupiny django-cs nebo se připojit na IRC kanál #django-cs na serveru Freenode.

Poděkování

Chci poděkovat Zdrojáku za poskytnutý prostor, dále Filipu Vaculíkovi (Mintaka) a Michalu Valouškovi (msgre) za korektury a cenné připomínky, a také všem, kteří přispěli důležitými informacemi v komentářích. Díky. Pavel Dvořák

Pavel Dvořák

Pavel Dvořák

Autor je dlouhodobým studentem Fakulty informatiky, webový nadšenec a programátor — nejraději programuje v jazycích Haskell a Python.

Školení: Hackujeme operační systém Android

 

Školení vám ukáže, jak se dostat k Linuxu (tzv. "rootování"), který se pod hezkou tváří Androida skrývá a jak ho naplno využít. Pomůže vám to při záloze dat, zvětšování prostoru pro aplikace nebo sdílení připojení k internetu a pokud chcete z telefonu dostat opravdové maximum, ukážeme vám, jak v něm vyměnit kompletní systém za lepší.

Podrobnější informace a přihláška

Přehled názorů

Poděkování
TomBil 27. 11. 2009 20:34
Nový
Re: Django: Závěr
gal 27. 11. 2009 22:53
Nový
Připojuji se k poděkování
Mintaka 28. 11. 2009 19:00
Nový
Super
Karlos 29. 11. 2009 12:59
Nový
Děkuji za nakopnutí
Dramon 6. 12. 2009 17:14
Nový
Podekovani
viker 19. 11. 2011 19:54
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