Archivio di Dicembre 2008

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.

  1. 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
  2. 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
  3. 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
  4. 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) .
  5. 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 .
  6. 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)
  7. 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 NomeClasse
    from django.contrib import admin
    admin.site.register(NomeClasse)
  8. 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’
  9. Modifico poi il file NomeProgetto/urls.py per attivare la parte di amministrazione (scommentando dove trovo il commento: ‘# Uncomment .. to enable the admin”
  10. 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.
  11. 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...
    0 errors found.
    Django version 1.0.2 final, using settings ‘NomeApplicazione.settings’
    Development server is running at http://127.0.0.1:8080/
    Quit the server with CONTROL-C.
  12. 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.
  13. 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.

Python #2 (Hello World Web Wide Web)

Per prima cosa installo Apache:
~$ sudo apt-get update
~$ sudo apt-get install apache2

Verifico che Apache sia installato correttamente, navigando all’indirizzo: http://127.0.0.1,
poi installo il mod-Python per Apache:
sudo apt-get install libapache2-mod-python

Ora è necessario configurare Apache per abilitare il modulo Python, e devo decidere fra uno dei due modi possibili:

  • Publisher Handler ovvero useremo pagine con estensione .py “stand-alone”
  • Psp Handler ovvero useremo pagine con estensioni .psp con codice html con all’interno linguaggio python

Scelgo la seconda possibilità, ovvero Psp Handler, e quindi devo mettere mano al virtual host:
sudo gedit /etc/apache2/sites-available/default
Inserendo le seguenti righe di configurazione:
<directory>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .psp
PythonHandler mod_python.psp
PythonDebug On
</directory>

Riavviamo il server Apache:
sudo /etc/init.d/apache2 restart

Creo la prima pagina psp helloworld.psp:
sudo gedit /var/www/helloworld.psp

Edito la mia prima pagina psp:
<html>
<body>
<% req.write("Hello World Wide Web") %>
<body>
<html>

Verifico il funzionamento della pagina, puntando il browser all’indirizzo: http://127.0.0.1/helloworld.psp .

Python #1 (Hello World)

I primi test su Python partono su Ubuntu, versione 8.04.

Installo Python:
~$ sudo apt-get update
~$ sudo apt-get install python

Primo esempio: Hello World.

  • Creo il file “HelloWorld.py”
    ~$ nano -w HelloWorld.py
  • Edito il file “HelloWorld.py”, scrivendo la mia prima riga di codice Python:
    print “Hello, World!”
  • Eseguo il mio primo programma Python:
    ~$ python HelloWorld.py
  • Il programma stampa sul terminal:
    Hello, World!

Voglia di qualcosa di nuovo

Dopo un lungo periodo di assenza da questo blog, in cui mi sono dedicato a tante e svariate attività, fra cui i miei tornei di frisbee, il mio nuovo cane Spike, i vari siti che curo, il lavoro all’Università con un grosso progetto .NET e lavori privati fra cui il software DietaFactory, scritto sempre in .NET, attraverso ora un periodo con una strana voglia di nuovo.

Sto valutando e provando vari linguaggi che fino a oggi avevo solo sentito nominare ed userò il blog per annotare gli step necessari per le configurazion e tenere traccia delle risorse trovate in rete.

I linguaggi che mi incuriosiscono principalmente sono Ruby e Python, ovviamente sempre con l’attenzione rivolta al web, quindi i framework Ruby On Rails, Pylons, Django, Grok e Zope passeranno presto sotto le mie mani…

Advertising