Python #3 (Django #1)
Come primo Python Web Framework da passare in rassegna ho scelto Django, un framework con ORM, interfaccia di amministrazione automatica, sistema di templating, di cache e di internazionalizzazione… sembra tutto molto interessante.
- Per prima cosa quindi ho bisogno di installare un server di database e le rispettive librerie Python. Decido di usare MySql:
sudo apt-get install mysql-server python-mysqldb - Poi installo Django, scaricando il package più recente da: downloads Django
tar xzvf Django-1.0.2-final.tar.gz
cd Django-1.0.2-final
sudo python setup.py install
- Ora mi creo un symLink dalla cartella di django alla usr/bin:
sudo ln -s /usr/local/lib/python2.5/site-packages /usr/local/bin - Ok, tutto pronto per creare un nuovo progetto, quindi mi posiziono sulla cartella dove organizzerò tutti i miei progetti, non nello stile PHP (/var/www) per una maggiore sicurezza, ma in home/user/… quindi lancio il comando per la creazione del progetto:
sudo django-admin startproject NomeProgetto
Startproject creerà una cartella NomeProgetto con all’interno 4 files .py (__init__.py, manage.py, settings.py, urls.py) . - Ora dall’interno della cartella NomeProgetto, invoco la creazione della mia applicazione:
python manage.py startapp NomeApplicazioneQuesto comando creerà la cartella NomeApplicazione con all’interno i files:__init__.py, models.py, views.py . - Ora posso iniziare a disegnare il modello della mia applicazione, modificando il file NomeApplicazione/models.py
(utili queste pagine: pagina di documentazione django per la scritura di modelli pagina di documentazione django per i tipi di campi utilizzabili nel modello) - Di seguito modifico il file NomeSito/admin.py per attivare l’amministrazione per le classi di modello disegnate in precedenza:
from NomeSito.NomeApplicazione.models import NomeClasseadmin.site.register(NomeClasse)
from django.contrib import admin - Fatto ciò, apro il file NomeProgetto/settings.py e configuro la sezione database e INSTALLED_APPS.
Per il database configuro la connessione ad un db fra quelli disponibili (MySql, PostgreSQL, SQLite):
DATABASE_ENGINE
DATABASE_NAME
DATABASE_USER
DATABASE_PASSWORD
DATABASE_HOST
DATABASE_PORT
Per le installed apps, devo aggiungere due applicazioni: la mia NomeApplicazione e la applicazione per l’amministrazione ‘django.contrib.admin’ - Modifico poi il file NomeProgetto/urls.py per attivare la parte di amministrazione (scommentando dove trovo il commento: ‘# Uncomment .. to enable the admin”
- Ora posso lanciare il comando syncdb che creerà le tabelle per le INSTALLED_APPS di Django:
python manage.py syncdbLo script lancia la creazione delle tabelle per le INSTALLED_APPS che ancora non esistono sul database. Se non è mai stato creato un utente amministratore, questo script ci chiederà di configurarne uno. - Per verificare che tutto sia funzionante, entro nella cartella NomeProgetto e lancio:
python manage.py runserver 8080Se tutto funziona correttamente, l’output sarà qualcosa come questo:Validating models...Django version 1.0.2 final, using settings ‘NomeApplicazione.settings’
0 errors found.
Development server is running at http://127.0.0.1:8080/
Quit the server with CONTROL-C. - Ora puntiamo il browser all’indirizzo sopra indicato (http://127.0.0.1:8080/) e dovremmo vedere una pagina “Welcome to Django”.
Puntando il browser invece all’indirizzo http://127.0.0.1:8080/amin accederemo alla parte di amministrazione. - Per testare invece le API Django ed il nostro modello a riga di comando, possiamo lanciare:
python manage.py shell
Prima giornata con Django conclusa. Sono molto soddisfatto e sorpreso per le features di Django, infatti disegnando solo alcune classi di modello, ho a disposizione già tutti i metodi CRUD ed una ottima interfaccia di amministrazione back-office già pronta e funzionante out-of-the-box.