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

KMaDGWiki: ProgramovanieInternetovychAplikacii/startapp (last edited 2009-03-11 08:35:47 by dial-92-52-21-192-orange)