Django è un framework web gratuito e open-source scritto in Python. Pubblicato per la prima volta nel 2005, Django incorpora il motto di “sviluppo rapido e design pulito e pragmatico”. Il framework, distribuito su un server web, può produrre rapidamente un front-end web con funzionalità ricche, sicurezza e scalabilità.
Qualsiasi app web si affida ai database per i suoi contenuti. Django, essendo un framework moderno, supporta diversi programmi di database standard, ad esempio, PostgreSQL, SQLite, MySQL, ecc. Questa guida mostrerà come connettere un'app Django a un database su MySQL.
Prerequisiti
Per seguire questo tutorial è necessario soddisfare alcune precondizioni prima di passare a Django e alla connessione al database:
- Un server web adeguato. In questa guida utilizzeremo un server Ubuntu.
- Un ambiente di sviluppo Python 3 configurato correttamente.
- Un'applicazione di database. Ecco una guida approfondita su installazione e uso di MySQL.
Installazione e configurazione di Python 3
Django è scritto in Python. L'esecuzione di qualsiasi app Python richiede l'installazione dei binari Python nel sistema. Ubuntu viene fornito con Python installato di default. Qui useremo Python 3. Dal terminale, esegui i seguenti comandi. Innanzitutto, aggiorna la cache APT e aggiorna (se disponibile) tutti i pacchetti installati:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 è direttamente disponibile dai server dei pacchetti ufficiali di Ubuntu. Il pacchetto
python-is-python3 crea un python soft link binario a
python3 per facilità d'uso:
|
1 |
$ sudo apt install python3 python-is-python3 |
Successivamente, verifica se l'installazione è andata a buon fine:
|
1 2 |
$ python3 --version $ python --version |
Dopodiché, abbiamo bisogno di pip. È il gestore di pacchetti Python standard. È responsabile della gestione di librerie Python aggiuntive che non fanno parte della libreria standard. Nota che stiamo installando pip3 (per Python 3):
|
1 |
$ sudo apt install python3-pip |
Infine, abbiamo bisogno di alcuni pacchetti aggiuntivi per un ambiente di programmazione robusto:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
Installazione e configurazione di MySQL
Questa sezione mostrerà brevemente come installare e configurare MySQL. È disponibile nei repository dei pacchetti predefiniti di Ubuntu:
|
1 |
$ sudo apt install mysql-server |
Se l'installazione è andata a buon fine, MySQL inizierà a funzionare in background. Verifica se funziona correttamente:
|
1 |
$ systemctl status mysql |
Il server MySQL è attivo e funzionante. Ora possiamo passare in sicurezza allo sviluppo della nostra app Django.
Lavorare con Django
-
Creazione dell'app Django di esempio
La base della nostra app web richiede lo scheletro del progetto Django. Contiene tutti gli strumenti e le librerie necessari per creare un'app web robusta. Innanzitutto, creeremo una directory dedicata per la nostra app Django. Si consiglia di dare alla directory un nome significativo e coerente con l'app che stiamo per creare. In questa dimostrazione, la chiameremo myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
Abbiamo bisogno del modulo Python venv per creare un ambiente virtuale all'interno della directory. Installa il modulo usando APT:
|
1 |
$ sudo apt install python3-venv |
Quindi, naviga nella directory e crea un ambiente virtuale. Per chiarezza, abbiamo chiamato l'ambiente demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
Successivamente, attiva l'ambiente virtuale eseguendo lo script activate:
|
1 |
$ . demoapp_env/bin/activate |
Ora installeremo Django all'interno di questo ambiente virtuale dedicato. Pip scaricherà e installerà alcuni componenti aggiuntivi:
|
1 |
$ pip install django |
Django è installato e pronto per essere utilizzato. Chiama il comando django-admin per creare un nuovo progetto Django. Successivamente, assegna all'app un nome appropriato:
|
1 |
$ django-admin startproject demoapp |
Creerà un progetto demo con i file e le directory di progetto necessari al loro posto:
|
1 |
$ ls -l |
Lo scheletro del progetto è pronto. Successivamente, dobbiamo configurarlo correttamente per raggiungere il nostro obiettivo.
-
Modifica delle impostazioni del progetto Django
Tutte le configurazioni del progetto sono memorizzate nel file settings.py. Si trova all'interno della directory del progetto Django. Inizieremo impostando un fuso orario appropriato e listeremo gli host che possono connettersi all'app Django. Apri il file di configurazione in un editor di testo:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Scorri verso il basso lo script e trova la voce TIME_ZONE. A scopo dimostrativo, il fuso orario è impostato su America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
Come riferimento, il seguente comando stamperà tutti i fusi orari supportati in Linux:
|
1 |
$ timedatectl list-timezones |
Successivamente, scorri fino alla voce ALLOWED_HOSTS. Controlla quali macchine possono accedere all'app. A scopo dimostrativo, contiene solo localhost:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
Quindi, salva il file e chiudi l'editor. Il comando successivo applicherà le modifiche:
|
1 |
$ python manage.py migrate |
Ora dobbiamo creare un account amministratore per l'app web. Questo account verrà utilizzato per accedere all'interfaccia di amministrazione di Django. Esegui il seguente comando:
|
1 |
$ python manage.py createsuperuser |
Ti verranno chiesti nome utente, email e password. L'app è ora pronta per connettersi al database.
Connessione MySQL
-
Installazione dei connettori MySQL e delle librerie di sviluppo
Per integrare MySQL nell'app Django, abbiamo bisogno di alcune librerie Python 3 aggiuntive che forniranno gli strumenti necessari. Utilizzeremo il connettore del database mysqlclient. È un fork di MySQLdb.
Assicurati di avere python3-dev installato:
|
1 |
$ sudo apt install python3-dev |
Abbiamo anche bisogno di alcune intestazioni e librerie Python e MySQL aggiuntive:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
Al termine dell'installazione, usa pip per installare il modulo Python mysqlclient. Potrebbe generare alcuni messaggi di errore che possono essere ignorati:
|
1 |
$ pip install mysqlclient |
-
Configurazione di un database dedicato
Il passo successivo consiste nel configurare un database dedicato e un utente database per la nostra app Django. Avvia la shell MySQL come utente root :
|
1 |
$ sudo mysql -u root |
Per verificare tutti i database attualmente disponibili, esegui la seguente query:
|
1 |
$ SHOW DATABASES; |
Creiamo un database dedicato per la nostra app Django. Dagli un nome appropriato che sia coerente con il nome del progetto:
|
1 |
$ CREATE DATABASE demoapp_data; |
Quindi, verifica la creazione:
|
1 |
$ SHOW DATABASES; |
Ora, crea un utente MySQL dedicato. Configureremo questo utente come proprietario del database. L'app Django utilizzerà le credenziali di questo utente per lavorare con il database MySQL:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Assegna all'utente demoapp_user i permessi completi sul database demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
Affinché le modifiche ai permessi abbiano effetto, ricarica le tabelle dei permessi di MySQL:
|
1 |
$ FLUSH PRIVILEGES; |
Il database è ora pronto per essere connesso all'app Django.
-
Connessione del database all'app Django
Infine, configureremo l'app Django per utilizzare il database per l'archiviazione dei dati. Apri lo script di configurazione settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Scorri verso il basso fino alla voce DATABASES e inserisci il seguente codice:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
Salva il file e chiudi l'editor. Il passo successivo consiste nell'impostare il file di configurazione descritto nel codice precedente. Usa sudo per aprire il file di testo nella posizione descritta:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
Questo file di configurazione conterrà le informazioni sul database dedicato a Django e sull'utente che abbiamo creato nel server MySQL. Aggiungi le seguenti righe alla fine del file:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
Affinché le modifiche abbiano effetto, dobbiamo riavviare il server MySQL:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
Testare la connessione MySQL
È giunto il momento di verificare se la connessione MySQL funziona correttamente. Se il server Django si avvia senza problemi, allora la connessione funziona correttamente. In caso contrario, c'è qualcosa che non va. Per prima cosa, applica tutte le modifiche apportate al progetto Django:
|
1 |
$ python manage.py migrate |
Ora, spostati nella seguente directory del progetto e avvia il server Django:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
Successivamente, prova ad accedere al server da un browser web:
|
1 |
$ http://<server_ip_address>:8000 |
Ecco fatto! Siamo atterrati con successo sulla pagina di successo di Django. Questo conferma anche che la connessione MySQL funziona correttamente. Al termine del lavoro, puoi uscire in sicurezza dall'ambiente virtuale:
|
1 |
$ deactivate |
Considerazioni finali
In questa guida hai appreso le basi per combinare Django e MySQL. Abbiamo creato un'app Django e mostrato come connetterla a un database MySQL. La magia risiede nel file di configurazione di Django settings.py. Abbiamo anche modificato alcune impostazioni di base come ALLOWED_HOSTS e TIME_ZONE. Django è incredibilmente flessibile. Oltre a MySQL, supporta anche altri server SQL come PostgreSQL, motori server come Nginx, ecc.
Puoi anche consultare le nostre guide sulle migliori pratiche per installare, configurare e lavorare con Django:
- Installare il framework web Django su Ubuntu 20.04
- Configurare Django con PostgreSQL, Nginx e Gunicorn su Ubuntu 20.04
- Creare modelli Django: un tutorial
Buona programmazione!





Commenti
Ancora nessun commento. Scrivi il primo.