Django je besplatan web okvir otvorenog koda izgrađen u Python. Prvi put objavljen 2005. godine, Django utjelovljuje moto „brzog razvoja i čistog, pragmatičnog dizajna”. Okvir, postavljen na web poslužitelj, može brzo proizvesti web sučelje s bogatim značajkama, sigurnošću i skalabilnošću.
Svaka se web aplikacija oslanja na baze podataka za svoj sadržaj. Django, kao moderan okvir, podržava niz standardnih programa za baze podataka, na primjer, PostgreSQL, SQLite, MySQL, itd. Ovaj vodič prikazat će kako povezati Django aplikaciju s bazom podataka na MySQL-u.
Preduvjeti
Kako biste pratili ovaj vodič, morate ispuniti određene preduvjete prije nego što prijeđete na Django i povezivanje s bazom podataka:
- Odgovarajući web poslužitelj. U ovom vodiču koristit ćemo Ubuntu poslužitelj.
- Ispravno konfigurirano razvojno okruženje za Python 3.
- Aplikacija baze podataka. Evo detaljnog vodiča o instaliranju i korištenju MySQL-a.
Instaliranje i konfiguriranje Pythona 3
Django je napisan u Pythonu. Pokretanje bilo koje Python aplikacije zahtijeva instalaciju Python binarnih datoteka u sustavu. Ubuntu dolazi s unaprijed instaliranim Pythonom. Ovdje ćemo koristiti Python 3. Iz terminala pokrenite sljedeće naredbe. Prvo ažurirajte APT predmemoriju i nadogradite (ako je dostupno) sve instalirane pakete:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 je izravno dostupan sa službenih Ubuntu poslužitelja paketa. Paket
python-is-python3 stvara python binarnu meku poveznicu na
python3 radi lakšeg korištenja:
|
1 |
$ sudo apt install python3 python-is-python3 |
Zatim provjerite je li instalacija bila uspješna:
|
1 2 |
$ python3 --version $ python --version |
Nakon toga nam treba pip. To je standardni upravitelj paketa za Python. Odgovoran je za upravljanje dodatnim Python bibliotekama koje nisu dio standardne biblioteke. Imajte na umu da instaliramo pip3 (za Python 3):
|
1 |
$ sudo apt install python3-pip |
Na kraju, trebamo neke dodatne pakete za robusno programsko okruženje:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
Instaliranje i konfiguriranje MySQL-a
Ovaj odjeljak ukratko će prikazati instalaciju i konfiguraciju MySQL-a. Dostupan je iz zadane Ubuntu riznice paketa:
|
1 |
$ sudo apt install mysql-server |
Ako je instalacija bila uspješna, MySQL će se pokrenuti u pozadini. Provjerite radi li ispravno:
|
1 |
$ systemctl status mysql |
MySQL poslužitelj je pokrenut i radi. Sada možemo sigurno prijeći na razvoj naše Django aplikacije.
Rad s Djangom
-
Uspostavljanje ogledne Django aplikacije
Temelj naše web aplikacije zahtijeva kostur Django projekta. Sadrži sve potrebne alate i biblioteke potrebne za stvaranje robusne web aplikacije. Prvo ćemo stvoriti namjenski direktorij za našu Django aplikaciju. Preporučuje se nazvati direktorij nečim smislenim i usklađenim s aplikacijom koju namjeravamo izgraditi. U ovoj demonstraciji nazvat ćemo ga myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
Trebamo Pythonov venv modul za stvaranje virtualnog okruženja unutar direktorija. Instalirajte modul pomoću APT:
|
1 |
$ sudo apt install python3-venv |
Zatim idite u direktorij i uspostavite virtualno okruženje. Radi jasnoće, okruženje smo nazvali demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
Zatim aktivirajte virtualno okruženje pokretanjem skripte activate:
|
1 |
$ . demoapp_env/bin/activate |
Sada ćemo instalirati Django unutar ovog namjenskog virtualnog okruženja. Pip će preuzeti i instalirati neke dodatne komponente:
|
1 |
$ pip install django |
Django je instaliran i spreman za korištenje. Pozovite naredbu django-admin kako biste izradili novi Django projekt. Nakon toga dajte aplikaciji odgovarajući naziv:
|
1 |
$ django-admin startproject demoapp |
To će stvoriti demo projekt s potrebnim projektnim datotekama i direktorijima:
|
1 |
$ ls -l |
Kostur projekta je spreman. Zatim ga moramo ispravno konfigurirati kako bismo postigli svoj cilj.
-
Uređivanje postavki Django projekta
Sve konfiguracije projekta pohranjene su u datoteci settings.py. Nalazi se unutar direktorija Django projekta. Započet ćemo postavljanjem odgovarajuće vremenske zone i popisom poslužitelja koji se mogu povezati s Django aplikacijom. Otvorite konfiguracijsku datoteku u uređivaču teksta:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Pomaknite se prema dolje u skripti i pronađite unos TIME_ZONE. Za demonstraciju, vremenska zona je postavljena na America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
Za referencu, sljedeća naredba ispisat će sve podržane vremenske zone u Linuxu:
|
1 |
$ timedatectl list-timezones |
Zatim se pomaknite do unosa ALLOWED_HOSTS. On kontrolira koje računalo (ili računala) može pristupiti aplikaciji. Za demonstraciju, sadrži samo localhost:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
Zatim spremite datoteku i zatvorite uređivač. Sljedeća naredba primijenit će promjene:
|
1 |
$ python manage.py migrate |
Sada moramo stvoriti administratorski račun za web aplikaciju. Ovaj račun koristit će se za pristup Django administratorskom sučelju. Pokrenite sljedeću naredbu:
|
1 |
$ python manage.py createsuperuser |
Zatražit će korisničko ime, e-poštu i lozinku. Aplikacija je sada spremna za povezivanje s bazom podataka.
MySQL veza
-
Instaliranje MySQL konektora i razvojnih biblioteka
Kako bismo integrirali MySQL u Django aplikaciju, trebamo neke dodatne Python 3 biblioteke koje će pružiti potrebne alate. Koristit ćemo konektor baze podataka mysqlclient. To je fork od MySQLdb.
Provjerite imamo li python3-dev instaliran:
|
1 |
$ sudo apt install python3-dev |
Također trebamo neka dodatna Python i MySQL zaglavlja i biblioteke:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
Nakon što je instalacija dovršena, upotrijebite pip za instalaciju Python modula mysqlclient. Može generirati neke poruke o pogrešci koje se mogu zanemariti:
|
1 |
$ pip install mysqlclient |
-
Konfiguriranje namjenske baze podataka
Sljedeći korak je konfiguriranje namjenske baze podataka i korisnika baze podataka za našu Django aplikaciju. Pokrenite MySQL ljusku kao root korisnik:
|
1 |
$ sudo mysql -u root |
Za provjeru svih trenutno dostupnih baza podataka, pokrenite sljedeći upit:
|
1 |
$ SHOW DATABASES; |
Stvorimo namjensku bazu podataka za našu Django aplikaciju. Dajte joj odgovarajući naziv koji je u skladu s nazivom projekta:
|
1 |
$ CREATE DATABASE demoapp_data; |
Zatim provjerite stvaranje:
|
1 |
$ SHOW DATABASES; |
Sada stvorite namjenskog MySQL korisnika. Konfigurirat ćemo ovog korisnika kao vlasnika baze podataka. Django aplikacija koristit će vjerodajnice ovog korisnika za rad s MySQL bazom podataka:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Dajte korisniku demoapp_user puna dopuštenja nad bazom podataka demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
Kako bi promjene dopuštenja stupile na snagu, ponovno učitajte MySQL tablice dopuštenja:
|
1 |
$ FLUSH PRIVILEGES; |
Baza podataka je sada spremna za povezivanje s Django aplikacijom.
-
Povezivanje baze podataka s Django aplikacijom
Na kraju ćemo konfigurirati Django aplikaciju da koristi bazu podataka za pohranu podataka. Otvorite konfiguracijsku skriptu settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Pomaknite se prema dolje do unosa DATABASES i unesite sljedeći kod:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
Spremite datoteku i zatvorite uređivač. Sljedeći korak je postavljanje konfiguracijske datoteke opisane u prethodnom kodu. Koristite sudo kako biste otvorili tekstualnu datoteku na opisanoj lokaciji:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
Ova konfiguracijska datoteka sadržavat će informacije o bazi podataka namijenjenoj Djangu i korisniku kojeg smo kreirali na MySQL poslužitelju. Dodajte sljedeće retke na kraj datoteke:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
Kako bi promjene stupile na snagu, moramo ponovno pokrenuti MySQL poslužitelj:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
Testiranje MySQL veze
Sada je vrijeme da provjerite radi li MySQL veza ispravno. Ako se Django poslužitelj pokreće bez problema, onda veza radi dobro. U suprotnom, nešto nije u redu. Prvo primijenite sve promjene napravljene na Django projektu:
|
1 |
$ python manage.py migrate |
Sada prijeđite u sljedeći direktorij projekta i pokrenite Django poslužitelj:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
Zatim pokušajte pristupiti poslužitelju iz web preglednika:
|
1 |
$ http://<server_ip_address>:8000 |
Evo ga! Uspješno smo dospjeli na Django stranicu uspjeha. To također potvrđuje da MySQL veza radi ispravno. Nakon što je zadatak završen, možete sigurno izaći iz virtualnog okruženja:
|
1 |
$ deactivate |
Završne misli
U ovom ste vodiču naučili osnove kombiniranja Djanga i MySQL-a. Izradili smo Django aplikaciju i prikazali kako je povezati s MySQL bazom podataka. Čarolija leži u konfiguracijskoj datoteci Djanga settings.py. Također smo izmijenili neke osnovne postavke poput ALLOWED_HOSTS i TIME_ZONE. Django je nevjerojatno fleksibilan. Osim MySQL-a, podržava i druge SQL poslužitelje poput PostgreSQL-a, poslužiteljske motore poput Nginxa itd.
Također možete pogledati naše vodiče o najboljim praksama za instalaciju, konfiguraciju i rad s Djangom:
- Instalacija Django web okvira na Ubuntu 20.04
- Postavljanje Djanga s PostgreSQL-om, Nginxom i Gunicornom na Ubuntu 20.04
- Stvaranje Django modela: Vodič
Sretno programiranje!





Komentari
Još nema komentara. Budite prvi.