Django: projekat, aplikacije i prvo pokretanje

Lekcija 2 od 9 · Python web: Django projekat

Pravimo kostur projekta: Django projekat logo_kreator sa dve aplikacije – logoi (naslovna, generator, čuvanje) i nalozi (registracija). Pokrećemo razvojni server, pravimo bazu i administratora i otvaramo admin panel.

Pre nego što počneš: potrebno predznanje – priprema okruženja.
Kako da učiš: radi u svom projektu korak po korak i posle svake lekcije proveri da li server radi; zadatak na kraju prvo uradi sam/a. Kod je za Django 5.2 (LTS) i Python 3.12+; svaki deo upiši u fajl naveden u komentaru na vrhu primera.

Projekat i aplikacije

U Django-u projekat je ceo sajt (podešavanja, glavni URL-ovi), a aplikacije su njegovi delovi koji rade jednu stvar. Aplikacija se može preneti i u drugi projekat.

:: u folderu logo_kreator_django, sa aktivnim .venv
django-admin startproject logo_kreator .
python manage.py startapp logoi
python manage.py startapp nalozi

Tačka na kraju prve komande znači „napravi projekat u ovom folderu“ – tako ne nastaje još jedan suvišan nivo foldera.

logo_kreator_django/
├── .venv/                 ← virtuelno okruženje
├── manage.py              ← alat za upravljanje projektom
├── logo_kreator/          ← podešavanja projekta
│   ├── settings.py
│   ├── urls.py
│   ├── asgi.py
│   └── wsgi.py
├── logoi/                 ← aplikacija: naslovna, generator, logoi
│   ├── admin.py  apps.py  models.py  tests.py  views.py
│   └── migrations/
└── nalozi/                ← aplikacija: registracija
    └── ...

Razvojni server

python manage.py runserver

Otvori http://127.0.0.1:8000 – vidi se Django-ova strana dobrodošlice (raketa). Server se sam ponovo pokreće kada sačuvaš izmenu u .py fajlu; zaustavlja se sa Ctrl+C. U komandnoj liniji vidiš svaki zahtev i statusni kod, kao u lekciji Kako radi web server.

Samo za razvoj: runserver nije napravljen za javni sajt. Na internetu aplikaciju pokreće Gunicorn (lekcija 9).

Prva baza i administrator

python manage.py migrate
python manage.py createsuperuser

migrate pravi fajl db.sqlite3 sa tabelama koje su Django-u potrebne (korisnici, sesije, admin). createsuperuser pravi korisnika sa svim pravima – unesi korisničko ime, email (može prazno) i lozinku dva puta (dok kucaš, ne vidi se ništa – to je normalno).

Pokreni server i otvori http://127.0.0.1:8000/admin/: posle prijave vidiš tabele Korisnici i Grupe i možeš ručno da dodaš korisnika. Admin panel dobijamo potpuno besplatno.

Kako Django obrađuje zahtev

pregledač ──GET /moji-logoi/──▶ urls.py ──▶ view (Python funkcija)
                                              │        │
                                              │        └──▶ Model ──▶ baza
                                              ▼
                                     template (HTML šablon)
                                              │
pregledač ◀──────── HTML odgovor ─────────────┘
DeoFajlUlogaLekcija
URLurls.pykoja adresa poziva koju funkciju4
View (pogled)views.pyPython funkcija: prima zahtev, vraća odgovor4, 8
Template (šablon)templates/*.htmlHTML sa mestima za podatke4
Modelmodels.pyopis podataka i rad sa bazom5

Ovo se zove MVT (Model – View – Template). U drugim framework-ovima (ASP.NET) isti princip se zove MVC.

Odmah: Git

git init
echo .venv/> .gitignore
echo __pycache__/>> .gitignore
echo db.sqlite3>> .gitignore
git add .
git commit -m "Početak Django projekta Logo kreator"

Fajl .gitignore kaže Git-u šta da ne prati: okruženje, privremene fajlove i lokalnu bazu. Posle svake lekcije napravi novi „commit“ – ako nešto pokvariš, lako se vraćaš.

Video: pregled projekta

Napomena uz video: video je snimljen za prvu verziju projekta (starija verzija Django-a, Heroku). Ideje su iste, ali se kod iz ove lekcije razlikuje u detaljima – kada se razlikuju, važi kod sa ove strane.

Zadaci za vežbu

Za svaki zadatak postoji primer, uputstvo i rešenje.

ZADATAK 01Težina: lako

Istraži admin panel

U admin panelu napravi dva obična korisnika (bez administratorskih prava). Zatim u komandnoj liniji pokreni python manage.py shell i ispiši korisnička imena svih korisnika.

Česte greške i saveti
  • Komande se pokreću u folderu u kome je manage.py, sa aktivnim okruženjem.
  • Port je zauzet? python manage.py runserver 8080.
  • Ime aplikacije je malim slovima i bez crtica (logoi, ne Logoi ili logo-i) – koristi se kao ime Python modula.
  • Ne briši folder migrations – u njemu je istorija izmena baze.

Proveri znanje

Otvori kviz

Projekat i aplikacije

1. Šta pravi komanda python manage.py migrate prvi put?




2. Kako se zove deo Django-a koji je Python funkcija i vraća odgovor?




3. Da li runserver služi za javni sajt na internetu?