Tuesday, September 26, 2023

Korak po korak, kako kreirati u Django-u jednostavnu tabelu i koristiti Django administraciju?

Ukoliko ste pročitali, prostudirali, instalirali i pripremili sve neophodno za početak učenja Django radnog okvira, pogledajte prethodni post ovde; onda ste spremni za prva, početna i osnovna podešavanja projekta django_tutorial. U prošlom postu našeg tutorijala smo pored kreiranja projekta, takođe kreirali aplikaciju main i super korisnika. Proverili smo da se naš projekat pokreće na lokalnom serveru, portu 8000 uspešno i da se možemo ulogovati na Django administraciju. Da bi nastavili dalje sve iz prethodnog posta mora biti odrađeno uspešno. Ukoliko to nije slučajno vratite se na prošli post ovog Django tutorijala ovde i sve korak po korak ponovo odradite. Ako ste sve uradili kako treba, pokrenite Visual Studio Code ili IDE – Integrisano razvojno okruženje, koje vi koristite; i u njemu otvorite projekat django_tutorial. Proverite da li je meni opcija File -> Auto Save čekirano da se vaš svaki progres automatski sačuva i da ne morate konstanto pritiskati Save dugme. Zatim otvorite panel terminal na View -> Terminal i pokrenite aktivaciju vašeg projekta na sledeći način:

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 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 ste dobili rezultat kao na sledećoj slici, onda je sve u redu i možemo nastaviti tačno tamo gde smo stali u prethodnom postu.


( Uspešno pokrećanje Django razvojnog servera )

I pored toga što ste kreirali aplikaciju main u projektu django_tutorijal, to nije dovoljno; nego se kreirana aplikacija mora definisati u fajlu projekta koji se zove settings.py . To je bitan korak koji omogućuje Django radnom okviru da razume i pravilno konfiguriše vašu aplikaciju unutar projekta. Zato, prvo definišite aplikaciju, tako što ćete dodati sledeći kôd u fajl settings.py

# Application definition

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'main',

]

Sledeća podešavanja bez kojih aplikacija ne može funkcija su URL-ovi. Ali šta je URL? URLDjango-u predstavlja Uniform Resource Locator - uniformni resursni lokator, odnosno adresu na kojoj se može pristupiti određenom delu vaše veb aplikacije. URL-ovi se koriste za mapiranje zahteva od korisnika na odgovarajuće views - poglede u vašoj aplikaciji. Bez obzira koliko je mala ili velika vaša aplikacija u projektu, ona će da koristi URL-ove koje joj definišete. S obzirom da jedan projekat može imati mnogo URL-ovaDjango preferira da svaka aplikacija ima svoj fajl u kojoj se definišu URL-ovi. Tako da se u glavnom projektu umesto URL-ova, pozivaju fajlovi koji imaju definisane URL-ove na nivou aplikacije. Zato sledeći korak je podešavanje URL-ova kako bi naša  aplikacija bila funkcionalna.

Podešavanja URL-ova u Django projektu i aplikaciji

Kliknite na fajl urls.py u glavnom projektu django_tutorial i dodajte sledeći kôd:

from django.contrib import admin

from django.urls import path, include

 

urlpatterns = [

    path('admin/', admin.site.urls),

    path('', include('main.urls')),

]


Zatim u aplikaciji main kreirajte novi fajl i nazovite ga isto urls.py i dodajte sledeći kôd:

from django.urls import path

from . import views

 

urlpatterns = [

    path('', views.home, name='home'),

]

Zatim pređite u fajl aplikacije view.py. Taj fajl predstavlja view – pogled aplikacije main. Pogledi su ključni deo arhitekture veb aplikacija izgrađenih na Django radnom okviru i služe za obradu zahteva korisnika, izvođenje poslovne logike, komunikaciju s bazom podataka, i na kraju, generiranje odgovora koji se šalje korisniku ili klijentu. Za sada dodajte samo sledeći kôd:

from django.shortcuts import render

 

def home(request):

    return render(request, 'main/home.html', {})

Ukoliko se pitate šta predstavlja funkcija home i prazne vitičaste zagrade { } u navedenom kôd-u, to znači da imate jednostavnu funkciju u Python programskom jeziku koja renderuje HTML stranicu, u ovom slučaju home.html, dok prazne vitičaste zagrade { } predstavljaju dictionary – rečnik, koji je prazan jer ne prosleđuje nikakve dodatne podatke koje bi si mogli proslediti zajedno sa HTML stranicom. Međutim, možete se upitati gde nam se nalazi fajl home.html? Pitanje je odlično, još nigde; ali hajde da ga kreiramo! Jednostavno u glavnom direktorijumu aplikacije main kreirajte novi fajl i nazovite ga naravno home.html Otkucajte sledeći  HTML sadržaj: 

<h1>Hello World</h1>

Zatim koristeći panel terminal ponovo pokrenite razvojni server:

(env) manuel@manuel-virtual-machine:~/django_tutorial:~/django_tutorial$ python3.11 manage.py runserver

Kad je razvojni server pokrenut trebate da dobijete rezultat isti kao na sledećoj slici.


( Rezultat funkcije home u views.py fajlu )

Pre nego što krenemo sa kreiranjem jednostavne tabele, treba da znate neke činjenice o tome zašto je Django odličan izbor za rad sa bazama podataka i kreiranje tabela. Django je izuzetno dobar okvir za rad s bazama podataka i tabelama iz više razloga:

       1.     ORM – Object Relational Mapping  

Django dolazi s moćnim ORM sistemom koji omogućuje programerima rad s bazama podataka koristeći Python objekte umjesto SQL upita. Ovo pojednostavljuje i ubrzava razvoj aplikacija jer programeri mogu raditi sa bazom podataka na visokoj apstraktnoj razini, a Django će automatski generirati SQL upite za njih.

2.       Podrška za različite baze podataka

Django pruža podršku za različite vrste baza podataka, uključujući PostgreSQL, MySQL, SQLite, Oracle i druge. To omogućuje programerima da odaberu bazu podataka koja najbolje odgovara njihovim potrebama.

3.       Automatsko stvaranje tabela

Django automatski generiše šemu baze podataka na temelju definicija modela u Python programskom jeziku. To uključuje stvaranje tabela, indeksa, veza i ograničenja integriteta podataka, čime se pojednostavljuje proces dizajniranja i održavanja baze podataka.

4.       Migracije

Django također dolazi sa sistemom migracija koji omogućuje sigurno ažuriranje šeme baze podataka tokom vremena bez gubljenja podataka. Migracije automatski generišu i primenjuju promene u bazi podataka kad god promenite definicije modela.

5.       ORM upiti

Django ORM pruža bogat skup API-ja za izvođenje različitih upita na bazi podataka. Programeri mogu koristiti Django QuerySet API za pristup, filtriranje, sortiranje i manipulaciju podacima u bazi podataka bez pisanja sirovih SQL upita.

6.       Django administracija

Django radni okvir dolazi sa ugrađenim administracijskim sistemom koje omogućuje programerima upravljanje sadržajem baze podataka putem veb sistema. Ovo je izuzetno korisno za brzo upravljanje i pregled podataka tokom razvoja aplikacija.

7.       Sigurnost

Django radni okvir se brine za sigurnost na razini baze podataka. Automatski sprečava SQL injekcije i omogućuje programerima da definišu ograničenja pristupa podacima pomoću sistema authentication – ovlašćenja i authorization – autorizacije.

8.       Skalabilnost

Django je skalabilan radni okvir koji omogućuje razvoj aplikacija koje se lako mogu skalirati kako bi podržavale veliki broj korisnika i velike količine podataka.

Sve ove značajne stavke čine Django odličnim izborom za razvoj veb aplikacija koje ovise o bazama podataka i tabelama; olakšavajući programerima rad s podacima i omogućujući im da se usmere na razvoj poslovne logike aplikacije. Zato kliknite na fajl models.py u aplikaciji main i ukucajte sledeći kôd:

from django.db import models

class Continents(models.Model):

    continent_en = models.CharField(max_length=20)

    continent_de = models.CharField(max_length=20, blank=True)

    continent_sr = models.CharField(max_length=20, blank=True)

Kao što možete videti u prethodnom kôd-u; mi jednostavno kreiramo tabelu tako što definišemo klasu koja sadrži nazive i podešavanje kolona koju tabela predstavlja u fajlu models.py. Tako ovde možete videti da jednostavna tabela predstavlja kontinente i sastoji se od tri kolone: engleski, nemački i srpski jezik u koje će korisnik unositi nazive kontinenata na ova tri jezika. Ako se pitate zašto baš pravimo klase u fajlu aplikacije models.py, to je jednostavno Python fajl u Django projektu koja sadrži definicije modela, tj. klasa koje opisuju strukturu i ponašanje tabela u bazi podataka. Modeli u Django radnom okviru koriste se za stvaranje i upravljanje šemom baze podataka, što uključuje definisanje tabela, kolona i njihovih relacija. Isto tako obratite pažnju da izbegavamo kreiranje kolone koja sadrži ID kolonu u tabeli jer jednostavno tu kolonu će Django radni okvir sam da kreira putem migracija.

Rad sa Django administracijom

U prethodnom postu, pogledajte ovde; već smo kreirali super korisnika i lozinku koji su neophodni kako bi smo mogli da koristimo Django administraciju za naš projekat. Prvo, da bi ste vi mogli videti tabelu koju smo kreirali neophodno je da izvršite migraciju. Drugo, da bi ste videli tu istu tabelu u Django administrativnom panelu i mogli preko njega manipulisati sa tabelom neophodno je da u svom projektu dodate sledeći kôd u fajlu admin.py

from django.contrib import admin

from .models import Continents

 

admin.site.register(Continents)

Svaki put kad pravite neku tabelu vi imate izbor. Vi možete praviti tabelu da se vidi samo na veb stranici ili da se vidi samo u Django administraciji interfejsu ili na oba mesta. Ovo treće je najčešći slučaj. Što se tiče fajla admin.py;  to je Python fajl u Django projektu koji se koristi za konfiguraciju i prilagođavanje administracijskog sistema, preciznije admin interfejsa za upravljanje podacima u vašoj Django aplikaciji. Django administracija omogućuje administratorima i razvojnim timovima jednostavan pristup i upravljanje podacima u bazi podataka, bez potrebe za pisanjem posebnih aplikacija ili pogleda za uređivanje podataka što itekako olakšava kompleksan posao. Zato prvo izvršimo migraciju pre nego što ponovo pokrenemo razvojni sistem sledećim komandama: 

(env) manuel@manuel-virtual-machine:~/django_tutorial/django_tutorial$ python3.11 manage.py makemigrates

(env) manuel@manuel-virtual-machine:~/django_tutorial/django_tutorial$ python3.11 manage.py migrate

(env) manuel@manuel-virtual-machine:~/django_tutorial:~/django_tutorial$ python3.11 manage.py runserver

Kad pokrenete razvojni sistem i Django administraciju možete videti da se tabela Continents nalazi na panelu Django administracije.


( Pristup tabeli Continents kroz Django administraciju )

Sad možete da manipulišete podacima koje želite da unesete, promenite, sačuvate ili obrišete u vašoj tabeli. Da bi ste umesto Continents object (1) videli nazive kontinenata, dodajte sledeći kôd u models.py

from django.db import models

 

class Continents(models.Model):

    continent_en = models.CharField(max_length=20)

    continent_de = models.CharField(max_length=20, blank=True)

    continent_sr = models.CharField(max_length=20, blank=True)

 

    def __str__(self):

        return self.continent_en

Kako svo ovo kodiranje izgleda, možete pogledati i u video-u.



( Django - 2. How to create a simple table and use Django Administration ? )


 

 

 

No comments:

Post a Comment