Bez obzira na kakvom Django projektu hoćete da radite, malom ili velikom; jedna od bitni stavki je planiranje i kreiranje NavBar-a. NavBar je skraćenica od Navigation Bar – navigacioni meni; često u Srbiji to nazivamo i navigator ili navigacija. Navigacioni meni se uglavnom nalazi na vrhu veb stranice ili aplikacije. Njegova osnovna svrha je pružiti korisnicima brz i lak način za navigaciju kroz različite sekcije veb stranice ili aplikacije; kao što su početna stranica, kontakt forma, kategorije proizvoda ili usluga, ili bilo koja druga sekcija. Kroz navigacioni meni takođe routing – rutirate tj. usmeravate URL-ove u Django u aplikaciji. To vam pomaže da lako prelazite između različiti views – pogleda aplikacija ili veb stranica. Ako vaša Django aplikacija ima korisničke naloge i funkcionalnosti kao što su prijava, registracija ili upravljanje profilom, navigacioni meni može sadržavati i linkove prema tim opcijama. Međutim, obratite pažnju da navigacioni meni takođe igra ulogu u estetici i identitetu vaše veb stranice ili aplikacije. Dizajniranje i pravilno stilizovanje NavBar-a može doprineti prepoznatljivosti i atraktivnosti vašeg brenda. Zato kod kreiranja navigacionog menija takođe koristimo i Bootstrap, bez obzira što je stara praksa da navigacioni meni možete odraditi profesionalno koristeći samo HTML i CSS. Naravno, izbor je uvek na vama osim u slučajevima kad klijent ili kompanija striktno zahtevaju da se zaobiđe Bootstrap.
manuel@manuel-virtual-machine:~/django_tutorial$ source env/bin/activate
(env) manuel@manuel-virtual-machine:~/django_tutorial$
Proverite da li vaš projekat ima grešaka, tako što ćete pokrenuti Django razvojni server:
(env) manuel@manuel-virtual-machine:~/django_tutorial$ cd django_tutorial/
(env) manuel@manuel-virtual-machine:~/django_tutorial:~/django_tutorial$
(env) manuel@manuel-virtual-machine:~/django_tutorial:~/django_tutorial$ python3.11
manage.py runserver
Ukoliko se Django razvojni server pokrenuo i ne prijavljuje greške, onda možete početi sa kreiranjem NavBar-a u django_tutorial projektu. Ukoliko pogledate strukturu projekta django_tutorial možete videti da se početna stranica home.html nalazi u direktorijumu templates aplikacije main. To jeste u redu, ali mi želimo da se organizujemo i da u našem direktorijumu templates koristimo više različitih stranica. Zbog toga sve što je vezano za početnu stranicu ili neku drugu stranicu koja ima sasvim drugačiju kategoriju; treba da bude u posebnom direktorijumu. Zato u templates direktorijumu kreirajte novi direktorijum i nazovite ga isto kao i aplikaciju main. Zatim prebacite fajl home.html u novi direktorijum templates/main. Ako bi ste sada pokrenuli Django razvojni server i pogledali lokalnu adresu na portu 8000, dobili bi ste grešku. To je zato što ste promenili lokaciju fajla home.html. Tako da je neophodno promeniti kôd da Django razvojni server može pronaći početnu stranicu u njenom promenjenom direktorijumu. Pogledajte fajl urls.py u aplikaciji main.
from django.urls import path
from . import views
urlpatterns
= [
path('', views.home, name='home'),
]
from django.shortcuts import render
def home(request):
return render(request, 'main/home.html', {})
Sad kad pokrenete Django razvojni server, otvoriće se početna stranica i videćete da nemate grešku i da sve radi. Prebacite se sad iz IDE – integrisanog razvojnog okruženja u pretraživač i posetite zvaničnu prezentaciju Bootstrap-a, i u meniju kliknite stavku Docs ili jednostavno kliknite ovde. Kopirajte HTML sadržaj iz Quick Start-a, drugog textbox-a. Zatim se vratite u Visual Studio Code ili IDE – Integrisano razvojno okruženje i u direktorijumu templates/main kreirajte novi fajl i nazovite ga base.html. U njega smestite prethodni kod koji ste kopirali i zatim ga prepravite da izgleda ovako:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,
initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
{% include
'main/navbar.html' %}
<br>
<div class=container>
{% block content %}
{% endblock %}
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>
Ukoliko
se pitate zašto kreiramo fajl base.py i šta on predstavlja; jednostavno hoćemo
da svaka stranica poziva ovu datoteku, da mi ne bismo ponavljali kôd i pisali ga na svakoj stranici ponovo. Na ovaj način svakoj HTML stranici koja poziva ovaj fajl imaće pristup Bootstrap-o. Ali ne samo to. Ako
hoćete da vam se navigacioni bar vidi na svakoj veb stranici, dovoljno je da Bootstrap stranicu sa navigacionim menijem pozovete u base.py fajl kojeg će pozivati sve
veb stranice projekta kojeg kreiramo. Zato ako pogledate u navedeni HTML sadržaj fajla kog ste prepravili, možete i sami zaključiti da on već poziva
fajl navbar.html, kojeg još nismo kreirali i u kojem ćemo kreirati navigacioni
meni i na taj način omogućiti da navigacioni meni bude dostupan svakoj veb
stranici koja bude pozivala fajl base.py. Kreirajte novi fajl i nazovite ga navbar.py.
Vratite se na Bootstrap stranicu i sa vaše leve strane pronađite NavBar link u
kategoriji Components. Kopirajte HTML sadržaj iz prvog textbox-a i smestite ga
u datoteku navbar.py. Ukoliko ste to uradili prepravite taj sadržaj da izgleda
ovako:
<nav class="navbar
navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle
navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<!--
<li class="nav-item">
<a class="nav-link active"
aria-current="page" href="#">Home</a>
</li> -->
<li class="nav-item">
<a class="nav-link" href="{% url 'home' %}">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'contents'
%}">Contents</a>
</li>
<!--
<li class="nav-item dropdown">
<a class="nav-link
dropdown-toggle" href="#" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item"
href="#">Action</a></li>
<li><a
class="dropdown-item" href="#">Another
action</a></li>
<li><hr
class="dropdown-divider"></li>
<li><a
class="dropdown-item" href="#">Something else
here</a></li>
</ul>
</li> -->
<li class="nav-item">
<a class="nav-link disabled" aria-disabled="true">About</a>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
Ovo
što smo do sada uradili je odlično, ali da bi smo videli rezultat promenićemo
sadržaj početne stranice i fajla home.py tako da on poziva fajl base.py kada se
prikaže u pretraživaču.
{% extends
'main/base.html'%}
{% block content %}
<h1>Hello World</h1>
{%
endblock %}
Kad
pokrenete Django razvojni server rezultat će biti kao na slici.
Da bi se naš projekat razvijao pored početne stranice mi hoćemo da naš Django tutorijal sadrži i veb stranicu Contents – sadržaj. Zato kreirajte novi fajl i nazovite ga contents.py. Unesite sledeći HTML sadržaj.
{% extends
'main/base.html'%}
{% block content %}
<h1>Contents</h1>
{%
endblock %}
Međutim
da bi ste mogli videti ovu stranicu, kao i svaku sledeću koja treba da bude deo
celine django_tutorial projekta, neophodno je da se pobrinete za URL-ove i
views – poglede. Dodaj sledeće linije HTML sadržaja:
urls.py
from django.urls import path
from . import views
urlpatterns
= [
path('', views.home, name='home'),
path('contents/', views.contents, name='contents'),
]
views.py
from django.shortcuts import render
def home(request):
return render(request, 'main/home.html', {})
def contents(request):
return render(request, 'main/contents.html', {})
Ukoliko
ste odradili navedeno bez ijedne greške, pokrenite Django razvojni server i
kliknete u navigacionom meniju link Contents. Dobićete sledeći rezultat kao na
slici.
Kako sav ovaj proces koji ste učili u ovom postu izgleda, možete pogledati i u video-u.
No comments:
Post a Comment