Views
Na začiatku sme si ukazovali jednoduchý pohľad, ktorý bol reprezentovaný funkciou vracajúcou v odpovedi HTML kód. Dnes však upustíme od tohto typu pohľadov a pozrieme sa na tzv. Class Based View-s, ktoré je doporúčané používať pri tvorbe webových aplikácií v Djangu. Ukážeme si teda niekoľko typov týchto pohľadov.
Ešte predtým však doinštalujeme ďalší balíček s názvom django-bootstrap3
. Tento balíček nám pomôže jednoduchšie používať webový rámec Bootstrap priamo v Djangu bez toho, aby sme museli ručne vytvárať vlastné šablóny. To je výhodné hlavne vtedy, ak nie ste s HTML veľkí kamaráti ;)
pip install django-bootstrap3
Následne treba v nastaveniach (súbor settings.py
) pridať novú aplikáciu do zoznamu existujúcich aplikácií:
INSTALLED_APPS = [
...
'bootstrap3',
...
]
TemplateView
Tento pohľad, ako už názov hovorí, je založený na šablóne. Vytvoríme teda jednoduchý pohľad, ktorý bude reprezentovať domovskú stránku. Vytvoríme teda triedu s názvom Homepage
, ktorá bude potomkom triedy TemplateView
v súbore views
našej aplikácie:
class HomePage(TemplateView):
pass
Trieda je zatiaľ prázdna. Ak však má byť tento pohľad založený na šablóne, musíme ešte povedať, na akej:
class HomePage(TemplateView):
template_name = 'homepage.html'
Aby tento pohľad mohol začať pracovať, je potrebné zaregistrovať tento pohľad do súboru urls.py
našej aplikácie:
urlpatterns = [
...
url(r'^$', HomePage.as_view(), name='home'),
...
]
Následne už stačí len otvoriť prehliadač na adrese http://127.0.0.1:8000/bank/
Problém však je, že sa nám zobrazí chyba s informáciou, že neexistuje šablóna s názvom homepage.html
spolu so zoznamom umiestnení, kde sa systém snažil túto šablónu nájsť.
Zoznam klientov pomocou ListView
Trieda reprezentujúca pohľad v súbore views.py
:
class ClientListView(ListView):
model = Client
Zaregistrovanie pohľadu v súbore urls.py
aplikácie:
urlpatterns = [
...
url(r'clients/$', ClientListView.as_view(), name='clients_list'),
...
]
Vytvorenie šablóny:
Detailný pohľad na klienta pomocou DetailView
Trieda reprezentujúca pohľad v súbore views.py
:
class ClientDetailView(DetailView):
model = Client
Zaregistrovanie pohľadu v súbore urls.py
aplikácie:
urlpatterns = [
...
url(r'clients/(?P<pk>\d+)$', ClientDetailView.as_view(), name='clients_detail'),
...
]
Vytvorenie šablóny: