URL započinje razgovor
Zamisli da u pregledač uneseš adresu veb sajta i pritisneš Enter. Pregledač unapred ne zna gde se taj sajt nalazi. Najpre mu je potrebna adresa servera, a zatim može da pošalje zahtev i obradi odgovor.
GET /learn HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Content-Type: text/html
<html>…</html>Pregledač je klijent: on traži stranicu. Veb server prima taj zahtev i šalje odgovor. Mnogo različitih klijenata može u isto vreme da traži stranice od istog servera.
Domen kao što je example.com je lako pamtljivo ime. DNS pomaže da se pronađe odgovarajuća IP adresa, koja prepoznaje server na mreži. Ovo je pojednostavljeno: DNS odgovori mogu biti keširani, a DNS ne prenosi svaki kasniji HTTP zahtev.
HTTP u jednoj rečenici: HTTP je veb protokol za zahteve i odgovore. Pregledač obično šalje GET kada traži stranicu. Status 200 znači uspeh; 404 znači da traženi resurs nije pronađen. Zaglavlja daju dodatne informacije, na primer o tipu sadržaja odgovora.
<link rel="stylesheet" href="site.css">
<script src="app.js"></script>
<img src="logo.png" alt="Logo">Pregledač parsira HTML, a zatim traži povezane CSS datoteke, JavaScript, slike i druge resurse. Za jednu vidljivu stranicu često je potrebno mnogo mrežnih zahteva.
browser → web server → Django URL routing → view → HTTP responseDjango radi na serverskoj strani. Može da usmeri zahtev ka odgovarajućem view-u, po potrebi koristi bazu podataka i vrati HTTP odgovor — često HTML. Django je koristan backend framework, ali nije obavezan za svaki veb sajt.
Gde se Django uklapa u rad na serverskoj strani
Django radi iza veb servera nakon što HTTP zahtev stigne do tvoje aplikacije.
- HTTP zahtevServer prosleđuje zahtev Djangu.
- URL rutiranjeDjango bira koji view treba da obradi njegov URL.
- ViewView određuje koji su rad i odgovor potrebni.
- Template / podaciView može prikazati HTML pomoću template-a ili po potrebi koristiti modele i bazu podataka.
- HTTP odgovorDjango vraća odgovor koji server šalje nazad pregledaču.
Django odgovoru nisu uvek potrebni template ni baza podataka. To su alati koje view može koristiti kada ih zahtev traži.
Jedan konkretan primer
Prati jedan zahtev
Ovo je ilustrativna priča, a ne stvarni endpoint koji treba da testiraš.
https://example.com/projects/
- Unesi adresuPosetilac unosi URL u pregledač.
- Pronađi serverDNS pomaže pregledaču da pronađe IP adresu za example.com.
- Zatraži /projects/Pregledač šalje GET zahtev za putanju /projects/.
- Prepusti Djangu da obradi zahtevZamišljena Django aplikacija rutira zahtev, dozvoljava view-u da pripremi stranicu i vraća HTML.
- Prikaži odgovorPregledač prima HTML, traži sve povezane resurse i prikazuje stranicu projekata.
Kasnije će tvoj My Project Hub koristiti istu ideju: lokalno ćeš pokrenuti Django, definisati URL rute i napisati view-e koji vraćaju odgovore.
Zašto je ovo važno za Django: Uskoro ćeš lokalno pokrenuti Django server, definisati URL rute i napisati view koji vraća odgovor. Poznavanje puta zahteva olakšava povezivanje tih koraka.
Put od URL-a do stranice
- Pronađi serverDNS prevodi domen u IP adresu da bi pregledač znao gde da se poveže.
- Pošalji zahtevPregledač šalje HTTP zahtev, često GET, i od servera traži resurs.
- Pripremi odgovorServer — a ponekad i Django — priprema status, zaglavlja i sadržaj kao što je HTML.
- Prikaži stranicu i preuzmi još resursaPregledač čita HTML, traži povezane fajlove i prikazuje završeni rezultat.
Važne razlike
- DNS nije veb stranicaDNS pomaže da se pronađe adresa. HTTP prenosi zahtev i odgovor kada pregledač već zna gde treba da se poveže.
- Odgovor je više od HTML-aOdgovor ima i statusni kod i zaglavlja. HTML zatim može da pokrene nove zahteve za CSS, JavaScript i slike.
