Django: Úvod a instalace

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ů)
- Django: Úvod a instalace 14. 8. 2009
- Django: Nastavení projektu a první pokusy 21. 8. 2009
- Django: Databázový model 28. 8. 2009
- Django: Databázový model podruhé 4. 9. 2009
- Django: Administrace 11. 9. 2009
- Django: Prezentace dat 18. 9. 2009
- Django: Prezentace dat podruhé 25. 9. 2009
- Django: Zpracovávání formulářů 2. 10. 2009
- Django: Autentizace a autorizace 9. 10. 2009
- Django: Nahrávání souborů 16. 10. 2009
- Django: Zabudované aplikace 23. 10. 2009
- Django: Rozšiřování možností Djanga 30. 10. 2009
- Django: Internacionalizace 6. 11. 2009
- Django: Nasazování projektu 13. 11. 2009
- Django: Kešování a škálování 20. 11. 2009
- 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č.
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ěvovaně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.
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
.
Související odkazy
- Představení a instalace na Djangoproject.com
- Představení a instalace na Djangoproject.cz
- První a druhá kapitola v The Definitive Guide to Django
V dalším dílu seriálu budeme už doopravdy programovat. Slibuji.
Tak na tento seriál se opravdu moc těším.
Muzu rici, ze vsechno co zatim bylo publikovano mi velice pomohlo. Moc dekuji.
Super, serial o djangu je vyborny napad !
Díky za první část seriálu a doufám, že se brzo dočkáme pokračování!
Rozhodně nemáte zač. A ano, seriál by měl vycházet každý pátek.
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 :(
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.
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
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