URL je adresa veb resursa
URL govori pregledaču gde da traži resurs i kako da do njega dođe. Domen kao što je example.com je samo host; ceo URL može sadržati i šemu, putanju, string upita i fragment.
https://example.com/projects/?status=active&page=2#resultsBudući My Project Hub može koristiti /projects/ za listu projekata. Ta putanja je veb adresa koju bira aplikacija; ne mora biti fizički folder na serveru.
http://localhost:8000/projects/localhost znači ovaj računar. Izričit :8000 je port koji Django razvojni server često koristi. HTTPS normalno koristi port 443 kada port nije naveden.
Koristi URL-ove primereno: Parametri upita mogu opisivati filtere, pretrage, sortiranje ili stranice. ?status=active sam po sebi ne filtrira projekte: pregledač ga šalje kao deo URL zahteva, a buduća My Project Hub aplikacija može po njemu filtrirati, ignorisati ga ili ga obraditi drugačije. Ne stavljaj lozinke, tokene ili druge tajne u string upita.
GET /projects/?status=active&page=2 HTTP/1.1
Host: example.comPregledač šalje putanju i upit serveru. Fragment #results ostaje u pregledaču za navigaciju unutar dokumenta ili drugo ponašanje na strani klijenta.
/projects/?status=active
/projects/?search=django
/projects/?page=2String upita često filtrira, pretražuje, sortira ili deli rezultat na stranice. Više parametara odvaja se sa &. View odlučuje da li i kako će ih koristiti.
project%20plan
filter=active%26urgent
search=project+hubNeki znakovi moraju biti kodirani da URL ostane jednoznačan. %20 predstavlja razmak, %26 predstavlja &, a kodiranje upita u stilu formi može koristiti + za razmak. Ne moraš da pamtiš te vrednosti.
/projects/ → project_list view
/projects/42/ → project_detail viewDjango URL rutiranje poredi putanju zahteva da bi izabralo view. Parametri upita mogu uticati na rezultat view-a, ali ih standardno Django poređenje URL obrazaca ne koristi za izbor obrasca.
Apsolutne i relativne URL reference
Apsolutan URL sadrži šemu i host, kao <code>https://example.com/projects/</code>. Reference relativne prema korenu i putanji su obe relativne URL reference u tehničkom smislu: <code>/projects/</code> počinje od korena sajta, dok se <code>projects/</code> i <code>../projects/</code> razrešavaju u odnosu na trenutnu stranicu. U svakodnevnom govoru <code>/projects/</code> često se naziva apsolutnom putanjom, ali nije kompletan apsolutni URL.
Osnovni URL: https://example.com/app/dashboard/https://example.com/projects/https://example.com/projects/Apsolutno: koristi tačno ovu adresu./projects/https://example.com/projects/Relativno prema korenu: počni od korena sajta. To nije kompletan apsolutni URL jer nema šemu ni host.projects/https://example.com/app/dashboard/projects/Relativno prema putanji: dodaj ispod trenutnog direktorijuma.../projects/https://example.com/app/projects/Relativno prema putanji: vrati se jedan segment, zatim uđi u projects.?status=activehttps://example.com/app/dashboard/?status=activeZadrži trenutnu putanju i zameni njen upit.#resultshttps://example.com/app/dashboard/#resultsZadrži stranicu i ciljaj fragment.
Završna kosa crta je ovde važna: osnova se završava sa <code>/</code>, pa pregledač tretira <code>dashboard/</code> kao direktorijum kada razrešava <code>projects/</code>.
Od URL-a do Django view-a
Kasnije će Django koristiti deo putanje URL-a iz pregledača da odluči koji view treba da odgovori.
- URL u pregledačuhttps://example.com/projects/?status=active&page=2#results
- URL putanja/projects/
- Django URL rutiranjePoredi obrazac putanje.
- ViewGradi odgovor; može da pročita i parametre upita.
String upita ostaje dostupan view-u, ali nije deo uobičajenog Django poređenja URL obrazaca.
Pročitaj URL korak po korak
- Pronađi šemu i hostOni govore pregledaču kako da komunicira i koji server da pronađe.
- Pročitaj putanjuOna određuje veb resurs koji aplikacija treba da obradi.
- Čitaj upit i fragment odvojenoUpit se šalje uz zahtev; fragment ostaje u pregledaču.
Izbegni ova URL pojednostavljenja
- Domen je ceo URLHost je samo jedan deo. Putanja, upit i fragment mogu promeniti šta pregledač radi.
- Fragment se šalje serveruPregledač zadržava fragment. Server dobija putanju zahteva i upit, a ne
#results.
