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

Odebírat
Upozornit na
guest
6 Komentářů
Nejstarší
Nejnovější Most Voted
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…

Odysseus: PewDiePie vydal open-source AI workspace, který běží na vašem vlastním hardwaru

AI
Komentáře: 0
Felix Kjellberg, youtuber se 110 miliony odběratelů, strávil rok učením se programovat a fine-tuningem vlastních AI modelů. Výsledkem je Odysseus – bezplatný, open-source workspace pro práci s umělou inteligencí, který neposílá žádná data do cloudu. Projekt má týden, přes 61 000 hvězdiček na GitHubu a znovu otevírá otázku, komu vlastně patří váš digitální kontext.

Když Git už nestačí: jak izolovat databázový stav pro pokusy AI agentů

Gitová větev vývojářům oddělí kód, ale databáze často zůstává společná. U AI agentů je to slabé místo: rychle spouštějí migrace, mění data a zkoušejí víc cest najednou. Databázová větev jim dá vlastní pracovní prostor, jenže tím práce nekončí. Ještě je potřeba řešit citlivá data, oprávnění, životnost větve i zbytek stavu aplikace.

GitHub vyhrál pohodlím. Stejné pohodlí dnes ztěžuje odchod

GitHub kdysi působil jako přesný opak SourceForge: rychlý, přehledný a přirozený. Dnešní projekt na něm ale často nemá jen kód. Má tam issues, pull requesty, CI, balíčky, bezpečnostní pravidla i AI agenty. Lock-in nevzniká tím, že by nešel odnést Git repozitář, ale tím, že se běžný provoz týmu postupně přesune do jedné platformy.