U današnjem tutorijalu, nastavićemo rad sa Djangom. Sredićemo prvu stranicu, pričati o fajlovima koji se već nalaze u folderu i videti šta radimo kada dodamo još foldera.
Kada smo ušli u folder koji nam je napravljen komandom: django-admin startproject ime_projekta
vidimo folder sa nazivom projekta, fajl manage.py kao i fajl db.sqlite3.
Fajl db.sqlite3 nam neće trebati jer nećemo raditi sa sqlite bazom već sa MySQL, ali o tome će kasnije biti reči. Tako da, ovaj fajl možete obrisati, a i ne morate, ja za sad neću.
Fajl manage.py nam služi za admin komande na projektu. Kao što smo pomoću django-admin komande pravili projekat, manage.py je maltene isto kao django-admin samo što ga koristimo u toku izrade projekta i on posmatra settings.py fajl i pokreće server po tim podešavanjima. Nama će biti potreban za pokretanje servera, pravljenje novih aplikacij u aplikaciji i rada sa bazom.
Velika prednost Djanga je što ima jako dobru dokumentaciju i često umesto da se odgovor nađe na Stack Overflow, nađe se u njihovoj dokumentaciji.
Mogu pisati o tome šta se sve radi u ovom fajlu, ali mislim da će se najbolje naučiti kroz rad.
Za sad neka bude samo, ovde se nalaze podaci o tome koju bazu koristimo, koje aplikacije imamo unutar naše aplikacije, putanja do šablona, kao i putanja do eksternih fajlova koje ćemo koristiti u aplikaciji (slika, stilova stranice, itd.).
Sve ove pojmove ću pojasniti kako ih budemo podešavali.
U ovom fajlu čuvamo putanje do stranica u okviru aplikacije.
Primer: Ako imamo link nesto.com/stranica1, u fajl u okviru urlpatterns dodamo:
path('stranica1/', views.stranica1)
Bitno: nakon imena linka, obavezna je kosa crta!
Sad se opet pa pitate šta je views.stranica1, a to je putanja na kojoj se nalazi funkcija koja će prikazati stranicu stranica1.
Nalazi se u fajlu views.py koji mi trenutno nemamo, ali ćemo napraviti kad krenemo sa radom.
Kao što vidite, sve je uvezano i umesto da pišem dalje šta je šta i kako radi, bolje da krenemo da radimo i usput da pojašnjavam. Ovo je bilo objašnjenje da barem okvirno imate u glavi šta za šta služi, pa da bi bilo jasno kada nešto radimo zašto to radimo, mada ću ja i tad napomenuti, neću pretpostavljati da se podrazumeva.
Malo pre sam u okviru objašnjenja settings.py spomenuo nekakve aplikacije u aplikaciji. To je samo naziv za nekakvu podaplikaciju u
našoj aplikaciji, npr. login će nam biti jedna podaplikacija, pregled treninga druga, unos treninga treća, itd.
Mi možemo sve pisati u ovoj glavnoj aplikaciji (folder koji se naziva po imenu projekta), ali onda bismo morali da jurimo gde se šta nalazi,
a ovako ćemo imati modularniji kod i kada želimo nešto da izmenimo odmah znamo gde (u koju podaplikaciju (folder) idemo).
Komandom
python manage.py startapp ime_app
pravimo novu podaplikaciju, prva neka se zove index, za početnu stranu.
Ono što se sad desilo, napravljen nam je novi folder sa imenom naše nove podaplikacije i unutra možete naći razne fajlove. Nama bitni fajlovi su views.py i models.py.
Bitno: Kad god napravimo novu podaplikaciju, moramo reći setting.py da ova aplikacija sada postoji.
U settings.py fajlu unutar glavnog foldera (ne foldera podaplikacije, jer tu settings.py ne postoji), nadjemo:
INSTALLED_APPS = [...]
i na kraj dodamo 'index' - ime aplikacije koju smo napravili.
Sada Django zna da postoji ova aplikacija i sada možemo s njom raditi.
Hajde sada da vidimo kako da prikažemo ovu stranicu. Rekli smo da putanje do stranica idu u urls.py . Pošto u index folderu nemamo taj fajl, napravićemo ga.
Unutar fajla, nalik na urls.py iz glavnog foldera, imamo urlpatterns, ali ovde ćemo dodati link za našu stranicu:
urlpatterns = [
path('', views.index)
]
Stavljamo prazno '' jer hoćemo da nam početna stranica bude nesto.com, a ne da link ima neki nastavak, to ćemo raditi za druge stranice,
ali ne za početnu.
Deo views.index znači da u fajlu views.py zovemo funkciju index da nam prikaže taj url.
Da bismo koristili path funkciju, moramo je importovati (uključiti u fajl) -> na vrhu urls.py dodamo:
from django.urls import path
from . import views
Sada u views.py treba da definišemo funkciju koju smo ovde referisali. U Pythonu se funkcija pravi sintaksom:
def ime_funkcije(argumenti): telo funkcije
Dakle naša funkcija će izgledati:
def index(request): return render(request, 'index.html')
U Djangu HTML stranice smeštamo unutar templates foldera koji je na nivou na kom je i glavni folder i folderi podaplikacija.
Kada smo napravili taj folder, unutar njega napravimo index.html i za sad smeštamo samo:
<h1>Index page</h1>
Pošto smo napravili novi folder, moramo to i reći settings.py fajl, pa unutar tog fajla, unutar TEMPLATES dela, pa unutar DIRS, dodajemo 'templates'.
Šabloni (template-i) su deo Djanga i ovo je neka standardna procedura sa HTML stranicama, sada samo za svaku novu stranicu dodamo novi .html fajl u templates folder.
Poslednje što treba da uradimo je da kažemo glavnoj aplikaciji gde da nađe url podaplikacije, tako da idemo u urls.py
i u urlpatterns dodajemo:
path('', include('index.urls'))
Da bismo koristili include funkciju, umesto
from django.urls import path
dodamo include pored path, pa izgleda ovako:
from django.urls import path, include
Ono što smo sad uradili jeste da smo rekli Djangu da kad smo na urlu '' treba da ide u urls.py index podaplikacije, a znamo da kad tamo dođe, isto će naići na '' i pozvati funkciju iz views.py koja će da prikaže index.html.
Sada kad smo završili sa ovim delom, ostaje nam da zapamtimo promene i okačimo ih na GitHub.
Komandom git add . dodajemo fajlove za praćenje. Komanda git status će nam pokazati šta se sve promenilo.
Komandom git commit -m "Dodata index app" ćemo zapamtiti sve promene uz poruku. Konačno git push će nam okačiti sve na GitHub.
Ovde ću stati, ima dosta stvari za preći, ako nešto ne radi slobodno mi pišite na Instagramu ili Facebooku.
Hvala što ste čitali, nadam se da je bilo korisno. :)