Thursday, March 23, 2023

Kako započeti razvoj veb aplikacija sa Django?

Django je framework – radni okvir koji se smatra jednim od najboljih radnih okvira za razvoj veb aplikacija. Napisan je u Python programskom jeziku i zato ne treba da vas čudi zašto je on najčešći izbor Python programera i zašto treba da poznajete Python programski jezik da bi ste koristili Django. Nastao je još u junu 2005 godine, otvorenog je koda i besplatan. Ono što je njegova prednost jeste što on nudi kompletno rešenje za izradu veb aplikacija od početka do kraja; nudi razne funkcije za upravljanje bazama podataka, veb stranicama i URL rutiranjem. On jednostavno ima mnoge ugrađene funkcionalnosti koje omogućavaju programerima da brzo razviju i testiraju veb projekat. Dizajniran je za skalabilne aplikacije i ima mogućnost rada s velikim brojem zahteva. To jednostavno znači da imate mogućnost širenja i razvijanja vašeg projekta, a da pri tome projekat zadrži sva njegova osnovna svojstva i funkcije. Vremenom i dodatnim procesima vaš mali projekat postaje sve veći i opet odlično funkcioniše. Django i jeste nastao iz potrebe za komplikovanim veb projektima. Ali ako mene lično pitate zašto sam u mnogim rešenjima već koristio Django, onda je glavni razlog zbog rada sa bazama podataka. Sa Django-m vi jednostavno ne morate da koristite SQL - Structured Query Language – strukturirani jezik upita. To ne znači da ne trebate da učite SQL. On jednostavno odrađuje stvari za vas, dok recimo u Laravel radnom okviru vi bukvalno kucate SQL komande u modulima. Django uključuje ORM - Object-Relational Mapping -  sistem za upravljanje bazama podataka. To omogućava programerima da rade s bazom podataka koristeći objekte Python programskog jezika umjesto SQL koda.


( Django je baziran na MVT - Model-View-Template arhitekturi )

E sad se možete pitati pa koja je razlika između Django-a i Laravel-a, i zašto većina veb sajtova koristi Laravel nego Django? Prvo zbog programskog jezika; Laravel radni okvir je razvijen u programskom jeziku PHP, dok je Django razvijen u programskom jeziku Python. Laravel je lako instalirati i hostovati na većini veb servera, dok Django zahteva specifične postavke servera kako bi se pravilno izvršavao. Isto tako mislim da se sa Django-m više koriste PostgreSQL baze podataka dok korisnici Laravel preferiraju MySQL baze podataka. To jeste vaš izbor ali ponekad je to izbor vašeg hosting provajdera. Što se tiče strukture Laravel radni okvir ima MVC - Model-View-Controller arhitekturu, dok Django radni okvir ima MVT - Model-View-Template arhitekturu koja razdvaja logiku aplikacije, vizualni prikaz i podatke. Oba pristupa su slični i imaju svoje prednosti i mane. Inače, tačno je da je Laravel radni okvir jednostavniji za upotrebu i brži za razvoj manjih projekata, dok Django nudi više funkcija i bolju skalabilnost za velike projekte. Zato vaš izbor uglavnom zavisi o vrsti projekta i razini vašeg znanja u programiranju. Oba radna okvira su dobra za razvoj modernih veb aplikacija, ali jedan može biti bolji izbor u odnosu na drugi, ovisno o specifičnostima projekta. Ono što bi još izdvojio kad je u pitanju izbor Django radnog okvira jeste njegov čuveni Admin panel. On ima ugrađeni Admin panel koji omogućuje jednostavno upravljanje aplikacijom, kao što su upravljanje korisnicima i unosom podataka; tako da neke podatke možete videti i pre nego što odradite HTML5 stranice koje će prikazivati iste. Isto tako ako dajete veliki značaj sigurnosti podataka, onda treba da znate da Django pruža niz sigurnosnih karakteristika, uključujući zaštitu od XSS – Cross Site Scripting i SQL Injection napada.

Kako da počnem sa Django projektom?

Za učenje i za kreiranje nekih manjih projekata; izbor operativnog sistema na kojem hoćete da učite i da radite nije toliko bitan, ali ako pravite veliki projekat na kojem ćete da raditi više meseci ili godina, onda unapred morate razmisliti bukvalno o svakoj sitnici. To zavisi od mnogih faktora. Ako ste zakupili Ubuntu server, što je najčešći izbor mnogih kompanija; onda će te Django projekte kreirati na Linux operativnom sistemu, verovatno i na Ubuntu distribuciji. Međutim, ako radite sa dosta veb dizajna i fotografija; onda je možda bolje da projekat kreirate na Windows operativnom sistemu radi Adobe Photoshop-a i drugih dizajnerski softvera. Ovaj tutorijal na ovom blogu će se kreirati Django projekat na Linux operativnom sistemu, Ubuntu distribuciji. Oni koji se odluče za Windows operativni sistem, njima preporučujem da instaliraju Git terminal. S njim možete koristiti neke Linux terminal komande na Windows operativnom sistemu. Pogledajte u video-u kako se instalira.


( Windows - 16. How to install Git terminal and push a project on GitHub? )

Zatim proveravamo da li imate i ako imate; koju verziju Python-a instaliran na vašem računaru. Ukoliko ne znate kako da instalirate Python, pogledajte ovde.

manuel@manuel-virtual-machine:~$ python3 --version

Python 3.10.6

manuel@manuel-virtual-machine:~$ python3.11 --version

Python 3.11.2

manuel@manuel-virtual-machine:~$ python3.11

Python 3.11.2 (main, Feb  8 2023, 14:49:25) [GCC 11.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> exit()

manuel@manuel-virtual-machine:~$

Ako ste sve uspešno završili, instalirajte virtualno okruženje. Virtualno okruženje je alat koji će vam pomoći da izolujete projekat od drugih Python projekata na vašem sistemu. Ali da bi ste njega instalirali najbolje je da proverite da li imate instaliran PIP - Python Package Installer, alat za upravljanje Python paketima, koji se koristi za instaliranje, ažuriranje i deinstaliranje Python biblioteka i modula. Kada se koristi PIP, korisnik može da navede ime ili verziju paketa koji želi da instalira, dok će PIP automatski preuzeti i instalirati sve zavisnosti koje su potrebne da bi taj paket funkcionisao ispravno. PIP se obično instalira zajedno sa Python jezikom, ali uvek proverite da li mu je potrebna nadogradnja.

manuel@manuel-virtual-machine:~$ python3.11 -m pip install --upgrade pip

manuel@manuel-virtual-machine:~$ python3.11 -m pip –version

manuel@manuel-virtual-machine:~$:~$ sudo apt-get install python3.11-venv

Ukoliko ste i ovo uspešno odradili, čestitamo! Spremni ste za kreiranje projekta kojeg ćemo nazvati django_tutorial. Kreirajte direktorijum i pozicionirajte se u njemu.

manuel@manuel-virtual-machine:~$ sudo mkdir django_tutorial

manuel@manuel-virtual-machine:~$ sudo chmod -R 777 django_tutorial

manuel@manuel-virtual-machine:~$ cd django_tutorial

manuel@manuel-virtual-machine:~/django_tutorial$

Zatim kreiramo virtualno okruženje za naš projekat. To ćete raditi svaki put kad kreirate novi projekat.

manuel@manuel-virtual-machine:~/django_tutorial$ python3.11 -m venv env

manuel@manuel-virtual-machine:~/django_tutorial $ ls

env

manuel@manuel-virtual-machine:~/django_tutorial $ cd env

manuel@manuel-virtual-machine:~/django_tutorial /env$ ls

bin  include  lib  lib64  pyvenv.cfg

manuel@manuel-virtual-machine:~/django_tutorial /env$

manuel@manuel-virtual-machine:~/django_tutorial/env$ cd bin

manuel@manuel-virtual-machine:~/django_tutorial/env/bin$ ls

activate      activate.fish  pip   pip3.11  python3

activate.csh  Activate.ps1   pip3  python   python3.11

manuel@manuel-virtual-machine:~/django_tutorial/env/bin$

Ukoliko izlistate novoformirani direktorijum, virtualnog okruženja projekta env; kojeg vi možete nazvati kako god hoćete. Takođe, obratite pažnju na ključni direktorijum bin. Otkucajte sledeće.

manuel@manuel-virtual-machine:~/django_tutorial/env/bin$ source activate

(env) manuel@manuel-virtual-machine:~/django_tutorial/env/bin$

Sa komandom source activate; aktivirali smo virtualno okruženje našeg projekta. Kad god vidite (env) ispred vašeg direktorijuma to znači da se nalazite u virtualnom okruženju vašeg projekta. Aktiviranjem ovog okruženja vi jednostavno možete instalirati, pokrenuti i upravljati paketima samo u tom okruženju. To vam jednostavno omogućava da kreirate i upravljate različitim verzijama paketa i njihovim zavisnosti bez uticaja na druge pakete, projekte i okruženja koje imate instalirane na vašem računaru. To takođe znači da možete praviti projekte u totalno različitim verzijama Python programskog jezika i različitim verzijama i neće dolaziti do konflikta jer Python za svako virtualno okruženje kreira posebnu instancu i na taj način izolira vaš projekat i biblioteke fajlova od drugih. Kad se nalazite u navedenom okruženju, možete da instalirate sledeće. Vratite se u početni direktorijum projekta i kucajte sledeće komande:

(env) manuel@manuel-virtual-machine:~/django_tutorial $ pip install --upgrade pip

Requirement already satisfied: pip in ./django_tutorial/env/lib/python3.11/site-packages (22.3.1)

Collecting pip

  Using cached pip-23.0.1-py3-none-any.whl (2.1 MB)

Installing collected packages: pip

  Attempting uninstall: pip

    Found existing installation: pip 22.3.1

    Uninstalling pip-22.3.1:

      Successfully uninstalled pip-22.3.1

Successfully installed pip-23.0.1

(env) manuel@manuel-virtual-machine:~/django_tutorial $ pip install Django

Collecting Django

  Using cached Django-4.1.7-py3-none-any.whl (8.1 MB)

Collecting asgiref<4,>=3.5.2

  Using cached asgiref-3.6.0-py3-none-any.whl (23 kB)

Collecting sqlparse>=0.2.2

  Using cached sqlparse-0.4.3-py3-none-any.whl (42 kB)

Installing collected packages: sqlparse, asgiref, Django

Successfully installed Django-4.1.7 asgiref-3.6.0 sqlparse-0.4.3

(env) manuel@manuel-virtual-machine:~$

Kad ste navedeno instalirali; možemo da kreiramo naš projekat sa pratećim direktorijumima i fajlovima.

(env) manuel@manuel-virtual-machine:~/django_tutorial$ django-admin startproject django_tutorial

Kada ste kreirali novi projekat, pozicionirajte se u njega i pokrenite Django server.

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

Watching for file changes with StatReloader

Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.

Run 'python manage.py migrate' to apply them.

March 23, 2023 - 15:57:47

Django version 4.1.7, using settings 'django_tutorial.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

Kao što možete zaključiti iz navedenih informacija; Django server se pokreće na lokalnom računaru na zadatoj IP adresi i portu. To je uglavnom na adresi 127.0.0.1 i portu 8000 ukoliko niste zadali parametre drugačije. Kad radite na Django projektu ukoliko se izmeni kôd aplikacije, server se automatski restartuje kako bi se promene primenile. Što znači da ćete često pokrećati i zatvarati server tako što pritisnete Ctrl + C na tastaturi. Kad je server pokrenut, možete otvoriti pregledač na navedenoj lokaciji i portu.


( Kad uspešno pokrenete Django server, dobićete ovaku veb stranicu)

Ako mislite da je to sve. Nije! Sledeće što trebate uraditi jeste da pored projekta napravite i aplikaciju. Jedan projekat može imati više aplikacija. Npr. jednu aplikaciju pravite posebno za logovanje; i sve što uz to ide na vašem sajtu; dok drugu aplikaciju pravite odvojeno od aplikacije koja prikazuje početnu stranicu. U suštini to je isti projekat ali broji dve aplikacije. Međutim, pre kreiranja aplikacije; neophodno je da izvršite migraciju i da kreirate super korisnika, kako bi ste mogli koristiti Admin panel. Migracija je važan koncept u Django-u jer omogućava programerima da brzo i jednostavno ažuriraju bazu podataka u skladu sa promenama u modelima, a istovremeno održavaju doslednost i integritet podataka. Ako se pitate kakva baza podataka kad nisam ni kreirao bazu podataka. Jeste, kad ste kreirali projekat. Pogledajte sami.

(env) manuel@manuel-virtual-machine:~/django_tutorial/django_tutorial$ ls

db.sqlite3  django_tutorial  manage.py

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

Operations to perform:

  Apply all migrations: admin, auth, contenttypes, sessions

Running migrations:

  Applying contenttypes.0001_initial... OK

  Applying auth.0001_initial... OK

  Applying admin.0001_initial... OK

  Applying admin.0002_logentry_remove_auto_add... OK

  Applying admin.0003_logentry_add_action_flag_choices... OK

  Applying contenttypes.0002_remove_content_type_name... OK

  Applying auth.0002_alter_permission_name_max_length... OK

  Applying auth.0003_alter_user_email_max_length... OK

  Applying auth.0004_alter_user_username_opts... OK

  Applying auth.0005_alter_user_last_login_null... OK

  Applying auth.0006_require_contenttypes_0002... OK

  Applying auth.0007_alter_validators_add_error_messages... OK

  Applying auth.0008_alter_user_username_max_length... OK

  Applying auth.0009_alter_user_last_name_max_length... OK

  Applying auth.0010_alter_group_name_max_length... OK

  Applying auth.0011_update_proxy_permissions... OK

  Applying auth.0012_alter_user_first_name_max_length... OK

  Applying sessions.0001_initial... OK

(env) manuel@manuel-virtual-machine:~/django_tutorial/django_tutorial$

Kada se kreiraju Django modeli, definiraju se različita polja koja modeli imaju. Kada se koristi Django ORM - objektno-relacijsko mapiranjeDjango će stvoriti tabelu u bazi podataka koja odgovara definiranom modelu. Kad kreirate novi projekat; Django će automatski stvoriti datoteku db.sqlite3 koja će sadržavati sve vaše tabele i podatke. Ovo je jednostavno baza napravljena po defaultu ali se kasnije menja u podešavanjima po vašoj želji. U ovom tutorijalu ćemo raditi sa PostgreSQL bazama podataka. Kad smo odradili migraciju možemo kreirati prvu aplikaciju za naš projekat. Kreiranje super korisnika je jednostavno. Sami odlučite koje ćete informacije koristiti za tu svrhu.

(env) manuel@manuel-virtual-machine:~/django_tutorial/django_tutorial$

python3.11 manage.py createsuperuser

Username (leave blank to use 'manuel'):

Email address: manuelsnotalkprogrammingvideos@gmail.com

Password:

Password (again):

Superuser created successfully.

(env) manuel@manuel-virtual-machine:~/django_tutorial/django_tutorial$

Admin panel je koristan alat za razvoj veb aplikacija jer omogućuje programerima i administratorima da brzo i jednostavno upravljaju podacima bez potrebe za pisanjem posebnog koda. Django automatski generira korisničko okruženje za vašu aplikaciju, a vi ga možete prilagoditi kako bi odgovarao vašim potrebama. Admin panel se sastoji od više stranica koje vam omogućuju pregled i uređivanje vaših podataka. Osim toga, možete pretraživati ​​i filtrirati podatke, dodavati nove zapise i uređivati ​​postojeće. Također, možete definirati prilagođene obrasce za unos podataka i definirati prilagođene poglede za pregled podataka i mnogo toga. Pokrenite ponovo Django server.

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

Watching for file changes with StatReloader

Performing system checks...


System check identified no issues (0 silenced).

March 23, 2023 - 17:19:34

Django version 4.1.7, using settings 'django_tutorial.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

Otvorite vaš pregledač i ukucajte sledeći link. http://127.0.0.1:8000/admin . Zatim unesite korisničko ime i šifru koju ste prethodno kreirali.

( Admin Panel zahteva kreiranje super korisnika da bi ste ga koristili )

Logujte se, kliknite na users i vidićete vaše korisničko ime. Kliknite na njega i dodajte vašem nalogu vaše pravo ime i prezime.

( Admin Panel se jednostavno koristi i pruža veliku pomoć tokom rada na Django projektu )

Pritisnite dugme Save i čestitamo. Upravo ste počeli da koristite Admin panel. Zatvorite pregledač, vratite se na terminal; zaustavite server sa Ctrl+C i onda kucajte sledeću komandu.

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

Komanda startapp pokreće skriptu manage.pyPython3.11 i kreira novu Django aplikaciju pod imenom main. Vi možete nazvati aplikaciju kako vi hoćete. Kada se kreira nova Django aplikacija, struktura projekta se automatski generiše, što uključuje potrebne datoteke i direktorijume za funkcionalnost aplikacije. Kao rezultat ove komande, Django će kreirati direktorijum main u projektnom direktorijumu, a u tom direktorijumu će se nalaziti inicijalne datoteke potrebne za novu Django aplikaciju. Ova nova aplikacija se obično koristi za organizovanje logike poslovnih procesa i interakcije sa bazom podataka unutar projekta. Izlistajte projekte vašeg projekta i pogledajte šta je sve Django kreirao za vas i pre nego što ste počeli da kreirate vaše veb stranice. Kako svo ovo kodiranje izgleda, možete pogledati i u video-u.


( Django - 1. How to create a Django project ?

 

 

 

 

 

 

 

 

 

 

 

 

No comments:

Post a Comment