Django: Úvod a instalace

Django logo

Django, webový framework napsaný v Pythonu, staví na principech maximální produktivity a znovupoužitelnosti. Neustále se vyvíjí a začíná se stávat populárním i mezi českými webovými vývojáři. Pojďme se podívat na jeho historii, základní vlastnosti a instalaci krok za krokem v prvním díle tohoto seriálu.

Seriál: Hrajeme si s Djangem (16 dílů)

  1. Django: Úvod a instalace 14.8.2009
  2. Django: Nastavení projektu a první pokusy 21.8.2009
  3. Django: Databázový model 28.8.2009
  4. Django: Databázový model podruhé 4.9.2009
  5. Django: Administrace 11.9.2009
  6. Django: Prezentace dat 18.9.2009
  7. Django: Prezentace dat podruhé 25.9.2009
  8. Django: Zpracovávání formulářů 2.10.2009
  9. Django: Autentizace a autorizace 9.10.2009
  10. Django: Nahrávání souborů 16.10.2009
  11. Django: Zabudované aplikace 23.10.2009
  12. Django: Rozšiřování možností Djanga 30.10.2009
  13. Django: Internacionalizace 6.11.2009
  14. Django: Nasazování projektu 13.11.2009
  15. Django: Kešování a škálování 20.11.2009
  16. Django: Závěr 27.11.2009

Pokud jste vytvářeli někdy nějakou větší webovou aplikaci, určitě jste se dostali do situace, kdy se programování stávalo monotónním, například protože se v projektu opakoval nějaký základní kód. Tento problém řeší frameworky, což jsou knihovny usnadňující práci s často používanými funkcemi. Django patří ke komplexnějším webovým frameworkům a podporuje moderní webové technologie, o kterých bude v příštích dílech řeč.

Tento tutoriál se snaží jít od úplných základů, takže stačí mít minimální zkušenosti s programováním, znalost Pythonu je však velkou výhodou. Jako úvod může posloužit třeba seriál Jana Švece Létající cirkus. Python je považován za přehledný jazyk a je možné se jej naučit „za chodu“.

Náš příběh začal v novinách…

Django bylo vyvíjeno už od roku 2003 jako součást redakčních systémů kansaského deníku Lawrence Journal-World. O dva roky později byl zdrojový kód otevřen a poskytnut široké veřejnosti pod liberální BSD licencí. Co se týče názvu, je odvozen od uměleckého jména jazzového kytaristy Djanga Reinhardta, jenž byl označován za průkopníka žánru. Framework Django se snaží, podobně jako Reinhardt, o inovaci a perfekcionismus.

Časem se z jednoduché knihovny stal velký projekt, na kterém běží řádově tisíce webových aplikací, můžeme tedy mluvit o prověřeném kusu softwaru. Vznikla také velice aktivní komunita kolem oficiálního webu, pořádají se Django konference, donedávna vycházel podcast This Week in Django, IRC kanál #django patří k nejnavštěvo­vanějším na serveru Freenode a v mailing listech se každodenně diskutuje. Bylo publikováno i několik knih v angličtině, z nichž mohu doporučit začátečníkům The Definitive Guide to Django (kniha je volně dostupná online) a pokročilejším djangistům Pro Django. Rozhodně se jedná o živý projekt, který má svou uživatelskou základnu i u nás.

Hlavní principy

Neopakujte se!

Pragmatický princip DRY (Don’t Repeat Yourself) nám říká, že každá dílčí znalost musí mít v systému jedinou, jednoznačnou, směrodatnou reprezentaci. Znamená to, že se nás Django snaží přimět k takovému rozvržení práce, v němž se zamezí rutinnímu opakování kódu. Bohatě se využívá vlastností objektově orientovaného programování a automatického generování kódu.

Model, šablona, pohled

MVC (Model-View-Controller), o kterém na Zdrojáku vyšel trojdílný seriál Borka Bernarda, je asi nejvyužívanější architektonický vzor. Django tento přístup interpretuje po svém a výsledný princip se označuje jako MTV (Model-Template-View). Zjednodušeně řečeno máme databázový model, z nějž získává data pohled (view), který je posílá (X)HTML šabloně. Tak je oddělena definice dat, jejich zpracování a prezentace. V příštím dílu se na tento princip podíváme blíže.

Objektový přístup k databázi

Místo psaní „syrových“ SQL dotazů, které často vedou k opakování a také se jejich implementace v různých databázích liší, Django preferuje tzv. ORM (Object-Relational Mapping) přístup. Pracujeme tak pouze jenom s objekty a funkcemi Pythonu. ORM implementované v Djangu transformuje objekty na dotazy, snaží se o jejich optimalizaci, a poskytuje nám vyšší abstrakci. Je ponechána možnost psát i čisté SQL, což se hodí pro složitější dotazy.

Další důležité rysy

Dále jen heslovitě:

  • automaticky generované administrační rozhraní
  • podpora „hezkých“ odkazů
  • výkonný šablonovací systém
  • podpora kešování
  • generování formulářů z databázového modelu, automatická validace
  • odlehčený webserver pro vývoj
  • škálovatelná architektura
  • lokalizace pomocí unixového nástroje gettext
  • spousta malých jednoúčelových aplikací (komentářový systém, generování RSS, autentizace uživatelů a další…)

Doufám, že jsem vás dostatečně navnadil, abyste Djangu dali šanci a vyzkoušeli ho. Pokud ano, můžeme se vrhnout na jeho zprovoznění.

Požadavky pro instalaci

Předpokladem je, že máte administrátorský přístup k UN*Xovému systému (Linux, BSD, Mac OS X…). Pokud používáte Windows, stačí si stáhnout a nainstalovat balík Instant Django. Další možností je využít služeb nějakého webhostingu, který Django podporuje, v tom případě nejspíše nebudete muset instalovat nic. Z českých poskytovatelů hostingu Django podporují minimálně Klenot a G-hosting, seznam zahraničních lze nalézt na webu Django Friendly.

Python

Podporovány jsou v současnosti verze Pythonu 2.3–2.6. Čím novější, tím lepší. Netýká se to ovšem verzí 3.x, které nejsou zpětně kompatibilní. Přechod na „trojkovou“ větev je pro takový velký projekt časově náročný a vývojáři Djanga s ním nepočítají dříve než v roce 2010.

Python by měl být na většině distribucí obsažen již v základní instalaci systému. Jestliže je všechno v pořádku, mělo by stačit napsat do příkazového řádku příkaz python a stisknout klávesu Enter. Poté by se měl spustit interpret Pythonu a zobrazit výpis podobný tomuto:

Python 2.5.2 (r252:60911, Jan  4 2009, 21:59:32)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Tímto jsme si ověřili dostupnost Pythonu a můžeme interpret ukončit klávesovou zkratkou Ctrl + D.

Webový server

Django se dá rozjet na celé řadě serverů, v podstatě na každém co podporuje specifikaci WSGI. Konfigurací se zatím zabývat nebudeme, protože Django obsahuje vlastní vývojový server, který na počáteční pokusy rozhodně stačí.

Databáze

Podpora databází je v Djangu poměrně rozsáhlá, máme na výběr mezi PostgreSQL, MySQL, Oracle a SQLite. Nejjednodušší je použít databázi SQLite, protože není potřeba vytvářet uživatele, zakládat databázi a přidělovat mu k ní práva. Navíc v Pythonu 2.5 a novějším je databáze SQLite již zabudována. Django podporuje experimentálně i několik dalších databází, ty se ale momentálně nedoporučuje používat.

Jestliže chcete pro začátek použít jinou konfiguraci než Python + integrovaný web server + SQLite, je dobrým nápadem nahlédnout do oficiální dokumentace.

Jakou verzi Djanga zvolit a jak ho nainstalovat?

V tomto seriálu se budeme zabývat verzí 1.1, ale příklady by měly fungovat v Djangu 1.0 a novějším. Pokud chcete instalovat Django z distribučních balíčků, zkontrolujte nejprve, zda se nejedná o nějakou zastaralou verzi. Django je distribuováno i ve vývojové verzi, která je vždy nejaktuálnější a průběžně se v ní objevují nové vlastnosti, není však tolik stabilní. Případní zájemci ji mohou najít v SVN repozitáři na adrese http://code.djangoproject.com/…jango/trunk/.

Zdrojový se nachází na oficiálních stránkách, stačí si stáhnout archiv a rozbalit jej, například pomocí příkazu tar xzvf Django-1.1.tar.gz. Po rozbalení přejděte do instalačního adresáře Djanga (příkaz cd Django-1.1) a napište pod uživatelem root příkaz python setup.py install, který spouští instalaci. Adresář, kam se Django nainstalovalo, by se měl v průběhu instalace zobrazit, v mém případě to bylo  /usr/lib/python2.5/site-packages/django/.

Jestliže instalace proběhla úspěšně, můžeme vytvořit náš první projekt v Djangu, v opačném případě zkuste problém vyřešit pomocí již zmíněné oficiální dokumentace.

Založení prvního projektu

Django se ovládá pomocí skriptu django-admin.py, napsáním příkazu django-admin.py help získáme přehled všech možností. Tento administrační skript kromě zakládání projektů a jejich manipulaci slouží i ke spouštění vývojového serveru. Při vývoji je dobrý nápad ukládat projekty do domovského adresáře a teprve poté je přemístit na „ostrý“ webserver. Každopádně projekt založíme příkazem django-admin.py startproject <nazev_projektu>, tedy kupříkladu já si založím projekt napsáním django-admin.py startproject hrajeme_si do příkazové řádky. Poté by se měl vytvořit adresář hrajeme_si, obsahující několik souborů:

$ ls hrajeme_si/
__init__.py  manage.py  settings.py  urls.py 

Soubor manage.py je zástupce pro skript django-admin.py, jenom příkazy provádí v rámci našeho projektu. Když přejdeme do vytvořeného adresáře, můžeme spustit vývojový server:

$ python manage.py runserver
Validating models...
0 errors found

Django version 1.1, using settings 'hrajeme_si.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C. 
Pokud není řečeno jinak, je potřeba vždy spouštět administrační skript manage.py v adresáři aktuálního projektu.

Jakmile je vývojový server spuštěn (ukončuje se pomocí klávesové kombinace Ctrl + C), stačí do prohlížeče zadat adresu http://127.0.0.1 :8000/ a můžeme vidět stránku, oznamující, že je projekt funkční. Port, na kterém server naslouchá, se dá přenastavit připsáním za spouštěcí příkaz, tedy kdybychom chtěli třeba port 12345, místo příkazu python manage.py runserver bychom napsali  python manage.py runserver 12345.

Django worked

Související odkazy

V dalším dílu seriálu budeme už doopravdy programovat. Slibuji.

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

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 9

Přehled komentářů

Dundee5 seriál
Kita Re: seriál
goojar Re: Django: Úvod a instalace
t3x díky
Pavel Dvořák Re: díky
c-x Re: Django: Úvod a instalace
Mintaka Re: Django: Úvod a instalace
Lisicky doplnění k poslednímu odstavci
Radecek Editor
Zdroj: https://www.zdrojak.cz/?p=3065