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

Zdroják » Různé » Django: Úvod a instalace

Django: Úvod a instalace

Články Různé

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.

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

Komentáře

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

Tak na tento seriál se opravdu moc těším.

Kita

Muzu rici, ze vsechno co zatim bylo publikovano mi velice pomohlo. Moc dekuji.

goojar

Super, serial o djangu je vyborny napad !

t3x

Díky za první část seriálu a doufám, že se brzo dočkáme pokračování!

c-x

Django je super, už jsem si začínal říkat že tu nějak chybí. Snad jedinou nevýhodou Djanga je že moc free hostingu nemá python :(

Mintaka

Snad bude líp. Třeba na Gigaserver.cz měli Python v nabídce a hosting se dal pořídit za cca 15Kč na měsíc, ale pak python stánuli, protože měli potíže že se daly zvýšit přístupové práva. Na nápravě se pracuje ale není to prioritní záležitost :-(

Takže bude ještě líp, až se admini naučí udělat bezpečný Pythoní hosting.

Lisicky

Pokud si django zkoušíte na vzdáleném serveru, nejde na něj z lokálu samozřejmě přistupovat jako na http://127.0.0.1:8000. V tom případě se dá spustit takto:
python manage.py runserver ip_adresa_serveru:8000
a přistupovat na něj přes http://ip_adresa_serveru:8000

Radecek

Ahoj,

zacinam s djangem, a nemuzu najit zadny poradny editor.. Pouzivam eclipse, ale nenaseptava tridy ani promenne atd. Neda se v tom delat tak moc rychle.. Mohli by jste mi prosim nejaky doporucit? Dekuji

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.