Aplikácie
Djangovské projekty by mali byť členené na aplikácie. Doteraz sme pracovali naplocho na úrovni projektu, bez členenia.
Aplikácia je relatívne samostatná oblasť funkčnosti projektu, ktorá žije vo vlastnom adresári. Pri správnom návrhu by aplikácie mali byť znovupoužiteľné v iných projektoch. Typické príklad aplikácie je diskusné fórum alebo anketa.
Aplikácia môže (ale nemusí) definovať vlastné views, modely alebo šablóny.
Projekt je množina aplikácií, ktoré zdieľajú databázu a nastavenia settings.py.
Django obsahuje v normálnej inštalácii aplikáciu pre správu modelov. Ďalšie aplikácie sú voľne dostupné na internete napríklad na http://djangoplugables.com/ .
Ako začať
Predpokladajme, že sme vytvorili projekt menom myproject.
Ak chceme v rámci existujúceho projektu vytvoriť novú aplikáciu, stačí napísať
$ ./manage.py startapp meno_aplikacie
Vznikne podadresár myapp:
$ ls myapp __init__.py models.py views.py
Čo je v adresári novej aplikácie
__init__.py |
Tento súbor zabezpečí, že budeme môcť robiť veci ako import myproject.myapp.views. |
views.py |
Sem patria views. |
models.py |
Sem patria modely |
Oboznamovanie djanga s existenciou aplikácie
Ak chceme, aby django o našej aplikácii vedel, musíme teraz do settings.py doplniť našu aplikáciu do INSTALLED_APPS.
1 INSTALLED_APPS = (
2 'django.contrib.auth',
3 'django.contrib.contenttypes',
4 'django.contrib.sessions',
5 'django.contrib.sites',
6 'myproject.myapp'
7 )
Je možné aj zakomentovať tie z django.contrib.* aplikácií, ktoré nás nezaujímajú. Potom sa nebudú vytvárať tabuľky pre ich modely pri ./manage.py syncdb.
URL pre aplikáciu
views.py teraz môžeme v globálnom urls.py používať pomocou
1 import myproject.myapp.views
a potom na tieto views odkazovať v rámci patterns.
Niekedy je ale lepšie aplikáciu odpútať od globálneho kontextu tak, aby mala vlastné urls.py vo svojom adresári. V globálnom urls.py potom zahrnieme pomocou include:
1 urlpatterns=patterns('',
2 (r'^myapp/',include('myproject.myapp.urls')),
3 )
Všimnite si, že include má ako parameter reťazec.
V urls.py v adresári aplikácie myapp potom definujeme premennú urlpatterns, napr.
1 urlpatterns=patterns('',
2 (r'^myview/',views.myview),
3 )
URL k view je potom
http://.../myapp/myview