Přejít k navigační liště

Zdroják » Různé » Django: Závěr

Django: Závěr

Články Různé

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.

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 -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

Komentáře

Subscribe
Upozornit na
guest
6 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
TomBil

Děkuji autorovi za přínosný seriál.

Již několikrát jsem se snažil začít s Pythonem a Djangem, ale až tento článek mne rozhýbal.

gal

Taktiez chcem podakovat za skvely serial.

Mintaka

Ač už se s Djangem nějaký ten pátek pošťuchujeme, děkuji za tenhle seriál. Bylo fajn se ohlédnout a když je člověk pozorný, vždycky se najde něco, co se hodí.

Díky.

Karlos

Též se připojuji k poděkování :-)

Dramon

Rád bych se připojil s poděkováním za seriál, který mně konečně donutil si sednout a začít s Djangem.

viker

Chtel bych take podekovat autorovi za tento serial, pristupnou formou mne nakopl kdyz jsem se zasekl u studia z anglickeho tutorialu a dokumentace jako takove…

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.