Impostazione ambiente di sviluppo per Django

Ora che sai a cosa serve Django, ti mostreremo come creare e testare un ambiente di sviluppo per Django su Windows, Linux (Ubuntu), e macOS — qualsiasi sistema operativo, comune, tu stia usando, questo articolo ti darà tutto il necessario per iniziare a sviluppare applicazioni Django.

Prerequisiti: Saper aprire un terminale / linea di comando. Saper installare un pacchetto software sul tuo sistema operativo.
Obiettivo: Avere un ambiente di sviluppo per Django (2.0) sul tuo computer.

Panoramica sull'ambiente di sviluppo per Django

Django rende molto semplice impostare il tuo computer per iniziare lo sviluppo di web application. Questa sezione spiega cosa avrai nel tuo ambiente di sviluppo, e fornirà una panoramica delle possibili impostazioni e configurazioni. Il resto dell'articolo spiega il metodo raccomandato per installare l'ambiente di sviluppo di Django su Ubuntu, macOS, e Windows, ed infine come testarlo.

Cosa è l'ambiente di sviluppo Django?

L'ambiente di sviluppo è un'installazione di Django sul tuo computer che puoi usare per sviluppare e testare applicazioni Django prima di metterle in ambiente di produzione.

Gli strumenti principali che Django fornisce sono una serie di script Python per creare e lavorare sui progetti Django, insieme ad un semplice webserver di sviluppo che puoi usare per testare localmente (ad es. sul tuo computer, non su un web server esterno) le applicazione web di Django usando un browser sul tuo computer.

Ci sono altri strumenti periferici, che formano l'ambiente di sviluppo, che non tratteremo qui. Questi includono cose come editor di testo o IDE per modificare il codice, e uno strumento per gestire il controllo di versione come Git per gestire in modo affidabile differenti versioni del tuo codice. Assumiamo che tu abbia già un editor di testo installato.

Quali sono le opzioni di setup di Django?

Django è estremamente flessibile in termni di come e dove può essere installato e configurato. Django può essere:

  • installato su differenti sistemi operativi.
  • usato con Python 3 e Python 2.
  • installato dal codice sorgente, da Python Package Index (PyPi) e in molti altri casi installato dal package manager presente nel sistema operativo installato.
  • configurato per usare uno o più database, che potrebbero necessitare di essere installati e configurati separatamente.
  • eseguito sull'ambiente Python di sistema o in un virtual enviroment Python separato.

Ognuna di queste opzioni richiede configurazioni e setup leggermente diverse. La seguente sottosezione spiega alcune di queste possibilità. Per il resto dell'articolo mostreremo come impostare Django in un piccolo numero di sistemi operativi, e questo setup sarà assunto valido per tutto il modulo.

Nota: Altri possbili metodi di installazione sono descritti nella documentazione ufficiale di Django. Diamo i link al documento appropriato più avanti.

Quali sistemi operativi sono supportati?

Le applicazioni Django possono essere eseguite su quasi tutte le macchine che possono eseguire il linguaggio Python 3: Windows, macOS, Linux/Unix, Solaris, per nominarne alcuni. Quasi tutti i computer hanno le caratteristiche per eseguire Django durante lo sviluppo.

In questo articolo tratteremo dei casi Windows, macOS, e Linux/Unix.

Quale versione di Python dovrei usare?

Django esegue sopra Python, e può essere usato sia con Python 2 o Python 3 (o entrambi). Quando scegli una versione devi stare attento che:

  • Python 2 è la versione legacy del linguaggio e non riceve nessuna novità ma ha un repository enorme per librerie di terze parti da usate da sviluppatori ( alcune delle quali sono sono disponbili per Python 3).
  • Python 3 è un aggiornamento di Python 2 che, anche se simile, è più consistente e semplice da usare. Python 3 è  il futuro del Python e contina ad evolversi.
  • è possibile usare entrambe le versioni usando librerie di compatibilità (come six), tuttavia non senza un ulteriore sforzo.

Nota: Storicamente Python 2 era la scelta più realistica, perché poche delle librerie di terze parti erano disponibili per Python 3. Il trend corrente è che molti dei nuovi package su Python Package Index (PyPi) supportano entrambe le versioni di Python. Mentre esistono ancora moli package che sono disponibili esclusivamente per  Python 2, scegliere Python 3 è ora una scelta fattibile.

Ti raccomandiamo di usare l'ultima versione di Python 3 a meno che il sito non dipenda da librerie di terze parti disponibili solo per Python 2.

Questo articolo spiegherà come installare un ambiente per Python 3 (il setup equivalente per Python 2 dovrebbe essere molto simile).

Dove posso scaricare Django?

Ci sono tre posti dove scaricare Django:

  • Il Python Package Repository (PyPi), usando pip. Questo è il modo migliore per avere l'ultima versione stabile di Django.
  • Installa una versione dal tuo gestore di pacchetti. Distribuzioni di Django incluse nei sistemi operativi offrono un sistema di installazione familiare. Nota che le versioni dei pacchetti possono essere piuttosto vecchie, e possono essere installati solo quelli dell'ambiente Python (che potrebbe non essere quello che volete).
  • Installarlo da codice sorgente. Puoi prendere e installare l'ultima versione di Python da codice sorgente. Questo non è raccomandato per i novizi, ma sarà necessario quando sarai pronto a contribuire a Django.

Questo articolo mostra come installare Django da PyPi, in modo da avere l'ultima versione stabile.

Quale database?

Django supporta 4 database principali (PostgreSQL, MySQL, Oracle e SQLite), e ci sono librerie che forniscono vari livelli di supporto ai più popolari  database SQL e NOSQL. Ti raccomandiamo di scegliere lo stesso database in sviluppo e in produzione (nonostante Django astragga le differenze tra i database usando il suo Object-Relational Mapper (ORM), ci sono potenziali problemi che è bene evitare).

Per questo articolo (e molti altri di questo modulo) useremo SQLite,che memorizza i dati in un file. SQLite è da intendersi come un database leggero senza supporto per un alto livello di concorrenza. Tutta via è una scelta eccellente per applicazioni  che fanno principalmente sola lettura.

Nota: Django è configurato per usare SQLite di default quando fai partire il tuo progetto usando gli strumenti standard (django-admin).  E' una scelta ottima quando stai iniziando perchè non necessita di configurazioni. 

Installare da sistema o in un ambiente virtuale di Python?

Quando installi Python 3 sul tuo computer hai un singolo ambiente globale (inteso come insieme di pacchetti installati) per il tuo codice Python, che puoi gestire usando pip3. Puoi installare qualsiasi pacchetto Python tu voglia, ma puoi installarne solo una certa versione alla volta. Questo vuol dire che ogni cambiamento che fai in una applicazione Python potenzialmente può aver effetto sulle altre, e quindi puoi avere una sola versione di Django alla volta.

Sviluppatori Python/Django con un po di esperienza spesso decidono di eseguire le loro applicazioni in un ambiente Python virtuale. Questo permette a gli sviluppatori di avere diversi ambienti di Django in un singolo computer, permettendogli di creare nuovi siti web (usando l'ultima versione corrente di Django) mentre mantengono siti web che fanno affidamento a versioni più vecchie. Gli sviluppatori del team di Django raccomandano di usare questi ambienti virtuali!

Quando si sta iniziando l'approccio iniziale che usate non è importante. Sebbene l'installazione sia un po' più facile, abbiamo deciso di mostrarti come installare Django direttamente sul Python 3 di sistema.

Importante: Il resto dell'articolo mostra come impostare Django in un ambiente con Python 3, su Ubuntu Linux, Mac OS X, e Windows 10.

Installare Python 3

Per usare Django devi installare Python 3 sul tuo sistema operativo. Avrai bisogno anche di Python Package Index  — pip3 — che viene usato per gestire (installare, aggiornare, e rimuovere) package/librerie Python usate da Django altre tue applicazioni Python.

Questa sezione mostra brevemente come puoi controllare quali versioni sono presenti, e se necessario installare una nuova versione, per Ubuntu Linux 16.04, Mac OS X, e Windows 10.

Nota: In base alla tua piattaforma, potrebbe essere possibile installare Python/pip dal gestore di pacchetti del sistema operativo o tramite altri meccanismi. Per molte piattaforme puoi scaricare i file di installazione da https://www.python.org/downloads/ usando le istruzioni per il vostro sistema operativo.

Ubuntu 16.04

Ubuntu Linux include Python 3 di default. Puoi aver conferma di questo eseguendo il seguente comando nel terminale bash:

python3 -V
 Python 3.5.2

Tuttavia il Python Package Index di cui hai bisogno per installare package Python 3 (incluso Django)  non è disponibile di default. Puoi installare pip3 dal terminale bash usando:

sudo apt-get install python3-pip

Mac OS X

Mac OS X "El Capitan" non include Python 3. Puoi averne conferma eseguendo il seguente comando nel terminale bash:

python3 -V
 -bash: python3: command not found

Puoi installare facilmente Python 3 (inseme a pip3) da python.org:

  1. Scarica l'installer:
    1. Vai su https://www.python.org/downloads/
    2. Seleziona Download Python 3.5.2 (il minor del numero di versione esatto può essere differente).
  2. Cercare il file usando Finder, fai doppio-click sul file. Segui le istruzioni dell'installazione.

Per essere sicuro della corretta installazione di Python 3:

python3 -V
 Python 3.5.20

Similmente puoi controllare che pip3 sia installato guardando i package disponibili:

pip3 list

Windows 10

Windows non include Python di default, ma puoi installarlo facilmente (insieme a pip3) da python.org:

  1. Scarica l'installer:
    1. Vai su https://www.python.org/downloads/
    2. Seleziona Download Python 3.5.2 (il minor del numero di versione esatto può essere differente).
  2. Installa Python facendo double-click sul file scaricato e segui le istruzioni

Puoi verificare che Python sia stato installato correttamente digitando sulla linea di comando:

py -3 -V 
 Python 3.5.2

L'installer di Windows contiene pip3 (Python package manager) di default. Puoi vedere la lista dei pacchetti installati usando:

pip3 list

Nota: L'installer dovrebbe essere impostato ovunque tu voglia, perché il comando di sopra funzioni. Se tuttavia dovessi ottenere un messaggio che Python non può essere trovato, potresti aver dimenticato di aggiungerlo al path di sistema. Puoi farlo eseguendo di nuovo l'installer, scegliendo "Modify" e selezionando "Add Pyhton to environment variables" nella seconda pagina.

Utilizzare Django all'interno di un ambiente virtuale Python

Le librerie che useremo per la creazione dei nostri ambienti virtuali sono virtualenvwrapper (Linux e macOS) e virtualenvwrapper-win (Windows), che a loro volta utilizzano entrambi il tool virtualenv. Gli strumenti wrapper creano un'interfaccia coerente per gestire interfacce su tutte le piattaforme.

Installare il software virtual environment

Setup del virtual environment su Ubuntu

Dopo l'installazione di Python e pip puoi installare virtualenvwrapper (che comprende virtualenv). La guida ufficiale di installazione si può trovare qui, oppure seguire le istruzioni sotto.

Installare il tool utilizzando pip3:

sudo pip3 install virtualenvwrapper

Poi aggiungi le seguenti linee alla fine del tuo file di startup della shell (questo è un file nascosto chiamato .bashrc nella tua directory home). Questo imposta la posizione in cui dovrebbero vivere i virtual environment, la posizione delle tue directory di sviluppo dei progetti e la posizione dello script installato con questo pacchetto:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=' -p /usr/bin/python3 '
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

Nota: Le variabili VIRTUALENVWRAPPER_PYTHON e VIRTUALENVWRAPPER_VIRTUALENV_ARGS puntano alla posizione di installazione normale per Python3, e source /usr/local/bin/virtualenvwrapper.sh punta alla posizione normale dello script virtualenvwrapper.sh. Se il virtualenv non funziona quando lo si testa, una cosa da controllare è che Python e lo script siano nella posizione attesa (e quindi modificare il file di startup adeguatamente).

Puoi trovare le posizioni corrette per il tuo sistema utilizzando i comandi which virtualenvwrapper.sh e which python3.

Poi ricarica il file di startup eseguendo il seguente comando nel terminale:

source ~/.bashrc

A questo punto si dovrebbe vedere un blocco di script che viene eseguito come mostrato sotto:

virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/postmkproject
...
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/postactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/get_env_details

Ora puoi creare un nuovo ambiente virtuale con il comando mkvirtualenv.

Setup di un ambiente virtuale su macOS

Impostare un virtualenvwrapper su macOS è quasi esattamente la stessa cosa che su Ubuntu (ancora una volta, si possono seguire le istruzioni o della guida official installation oppure quelle qui sotto.

Installare virtualenvwrapper (e costruire virtualenv) utilizzando pip come mostrato.

sudo pip3 install virtualenvwrapper

Poi aggiungi le seguenti linee alla fine del file di startup della shell.

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

Nota: la variabile VIRTUALENVWRAPPER_PYTHON punta alla normale posizione di installazione per Python3, e source /usr/local/bin/virtualenvwrapper.sh punta alla normale posizione dello script virtualenvwrapper.sh. Se il virtualenv non funziona quando lo si testa, una cosa da controllare è che Python e lo script siano nella posizione attesa (e poi modificare il file di startup adeguatamente).

Per esempio, un test di installazione su macOS avrà le seguenti linee necessarie nel file di startup:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
export PROJECT_HOME=$HOME/Devel
source /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh

Puoi trovare le posizioni corrette per il tuo sistema utilizzando i comandi which virtualenvwrapper.sh e which python3.

Queste sono le stesse linee come per Ubuntu, ma il file di startup è il file nascosto chiamato (diversamente) .bash_profile nella tua cartella home.

Nota: Se non riesci a trovare .bash_profile per modificarlo nel finder, puoi anche aprirlo nel terminale utilizzando nano.

I comandi saranno simili a questi:

cd ~  # Navigate to my home directory
ls -la #List the content of the directory. YOu should see .bash_profile
nano .bash_profile # Open the file in the nano text editor, within the terminal
# Scroll to the end of the file, and copy in the lines above
# Use Ctrl+X to exit nano, Choose Y to save the file.

Poi ricarica il file di startup facendo la seguente chiamata nel terminale:

source ~/.bash_profile

A questo punto, si dovrebbero vedere una serie di script che vengono eseguiti (gli stessi script dell'installazione in Ubuntu). Ora dovresti essere in grado di creare un nuovo virtual environment con il comando mkvirtualenv.

Setup del virtual environment Windows 10

Installare virtualenvwrapper-win è anche più semplice si settare virtualenvwrapper perché non hai bisogno di configurare dove i too memorizzano l'informazione dei virtual environment (c'è un valore di dafault). Tutto ciò che devi fare è eseguire il seguente comando nel prompt dei comandi:

pip3 install virtualenvwrapper-win

Ora sei in grado di creare un nuovo virtual environment con il comando mkvirtualenv.

Creazione di un virtual environment

Una volta installato virtualenvwrapper o virtualenvwrapper-win allora lavorare con virtual environment è molto simile su tutte le piattaforme.

Now you puoi creare un nuovo virtual environment col comando mkvirtualenv . Quando questo comando viene eseguito vedrai l'ambiente che viene settato (ciò che vedrai è leggermente specifico della piattaforma). Quando il comando viene completato il nuovo ambiente virtuale sarà attivo — potrai vederlo perché l'inizio del prompt sarà il nome dell'environment tra parentesi (sotto mostriamo questo per Ubuntu, ma la linea finale è simile anche per Windows e macOS).

$ mkvirtualenv my_django_environment

Running virtualenv with interpreter /usr/bin/python3
...
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/t_env7/bin/get_env_details
(my_django_environment) ubuntu@ubuntu:~$

Ora che sei dentro il virtual environment puoi installare Django e iniziare a sviluppare.

Nota: Da ora in questo articolo (e in effetti nel modulo) considerare che ogni comando venga eseguito in un virtual environment Python come quello che abbiamo settato sopra.

Utilizzare un Ambiente Virtuale

Ci sono solo pochi altri comandi utili che dovresti conoscere (ce ne sono molti nella documentazione del tool, ma questi sono quelli che userai regolarmente):

  • deactivate — Esci dall'attuale virtual environment Python
  • workon — Elenca i virtual environment disponibili
  • workon name_of_environment — Attiva il virtual environment Python specificato
  • rmvirtualenv name_of_environment — Rimuovi il virtual environment specificato.

Installare Django

Una volta che hai installato Python 3 e pip3, e creato un virtual environment, puoi usare pip3 per installare Django.

pip3 install django

Puoi testare se Django è installato eseguendo il seguente comando (questo verifica che Python riesca a trovare il modulo Django):

# Linux/Mac OS X
python3 -m django --version
 1.10.10

# Windows
py -3 -m django --version 
 1.10.10

Nota: Su Windows puoi eseguire script Python 3 usando il comando py -3, mentre su Linux/Mac OSX, il comando è python3.

Importante: Il resto di questo modulo usa, per invocare Python 3  il comando Linux  (python3) . Se stai lavorando su Windows usapy -3

Testare la tua installazione

Il test sopra funziona, ma non è molto divertente. Un test più interessante è creare lo scheletro di un progetto e vederlo funzionare. Per farlo, andate tramite linea di comando/terminale dove volete memorizzare le applicazioni Django. Create una cartella per il sito di test ed entrateci.

mkdir django_test
cd django_test

Ora si può creare lo scheletro di un nuovo sito chiamata "mytestsite" utilizzando il tool django-admin come mostrato. Dopo la creazione del sito potete esplorare la cartella creata, e troverete lo script principale per la gestione dei progetti, chiamato manage.py.

django-admin startproject mytestsite
cd mytestsite

Possiamo avviare il server web di sviluppo dalla cartella usando manage.py e il comando runserver.

$ python3 manage.py runserver 
Performing system checks...

System check identified no issues (0 silenced).

You have 13 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.

September 19, 2016 - 23:31:14
Django version 1.10.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Nota: Il comando sopra mostra il comando per Linux/macOS. Per ora potete ignorare il messaggio di avviso "13 unapplied migration(s)"!

Una volta che il server è in esecuzione potete vedere il sito usando il web browser e andando sul URL: http://127.0.0.1:8000/. Dovreste vedere un sito simile a questo:

Django Skeleton App Homepage - Django 2.0

Sommario

Ora avete un ambiente di sviluppo Django funzionante sul vostro computer.

Nella sezione di test avete visto brevemente come creare un sito web Django usando django-admin startproject, e come avviarlo sul browser usando il web server di sviluppo (python3 manage.py runserver). Nel prossimo articolo costruiremo una applicazione web semplice, ma completa.

Vedete anche