Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Python e cgi

Python e il Web: l'utilizzo di Python con i CGI e la programmazione lato server.
Python e il Web: l'utilizzo di Python con i CGI e la programmazione lato server.
Link copiato negli appunti

Nota: lezione in aggiornamento

Programmazione CGI

Python ha avuto un discreto successo nello sviluppo di applicazioni web. In particolare viene utilizzato come linguaggio di script richiamato da un server web attraverso la metodologia CGI (common gateway interface).
Il meccanismo CGI funziona nel seguente modo:
è necessario avere installato sul proprio computer i seguenti programmi:

  • Un server web, come Apache o Internet Information Server. Con questo tipo di programma è possibile costruire un sito internet sul vostro computer. Il server web, infatti, risponde alle chiamate in protocollo HTTP e fornisce come risposta dei files HTML contenuti nel vostro Hard Disk.
  • L'interprete python.

Potreste decidere di richiamare un programma python attraverso il web accedendo al sito internet creato dal server web.
Per fare questo è necessario installare un modulo (CGI) che permetta di invocare l'interprete python quando l'url presentata al server web ne richieda l'esecuzione.
I moduli CGI si trovano in rete, ne esistono per tutti i principali web server. Ad esempio per Apachee esiste il mod_python, sia per linux che per Microsoft Windows.
Una volta installato mod_python, diventa semplice richiamare un programma python.

Ad esempio: supponiamo che sulla nostra macchina sia stato installato un web server che risponde alle richieste http con il dominio "http://www.mio.it".
Per invocare il programma è sufficiente digitare sul web la seguente url: "http://www.mio.it/mio_programma.py". In questo caso è stato richiesto il programma python "mio_programma.py" contenuto nella root directory del server web.

Vediamo ora un semplice programma CGI in python:

def main():
print 'Content-type: text/html'
print
print '<HTML><HEAD><TITLE> Ciao,
mondo!</TITLE><BODY>"
print 'Ciao, mondo!'
print '</BODY></HTML>'

if (__name__ == '__main__'):
main()

Come si può osservare dal codice, il programma non fa altro che scrivere in output un file html. Infatti il CGI cattura tutto l'output del programma python e lo manda come risposta sul web. L'utente che ha richiesto l'esecuzione del programma otterra' in risposta il seguente documento html:

<HTML><HEAD><TITLE> Ciao, mondo!</TITLE><BODY>
Ciao, mondo!
</BODY></HTML>

Questo meccanismo apre le porte alla creazione di siti web dinamici. Ad esempio è possibile creare dinamicamente delle pagine web che contengono dati contenuti dentro ad un database.

Per fare cio' è sufficiente interfacciarsi ad un DBMS (come abbiamo visto in precedenza) e costruirsi la pagina web da stampare in output con la funzione "print".
Per aiutarci a costruire in modo più rapido delle pagine web esiste una libreria ad oggetti che permette di utilizzare delle classi predefinite. Chi è interessato può trovare informazioni presso HtmlGen

Programmazione Web lato server

I programmi CGI hanno un difetto: non hanno un grande performance. Infatti, tutte le volte che viene richiesta l'esecuzione di un programma CGI, viene creato un nuovo processo per eseguire una istanza dell'interprete python. Per risolvere questo problema diversi costruttori hanno creato dei piccoli trucchi. Ad esempio: in ambito Microsoft si possono creare dei programmi CGI sottoforma di DLL, in modo che possano essere caricati in memoria una sola volta e condivisi da tutte le richieste.

Tuttavia, per chi ha esigenze di prestazioni molto elevate, esiste un unica vera soluzione: avere il server web nello stesso programma CGI. Meglio ancora: avere il web server scritto nel linguaggio utilizzato, nel nostro caso python.
In questa situazione diventa tutto più semplice; infatti ogni chiamata CGI risulta essere equivalente ad una chiamata di una funzione all'interno dello stesso programma, quindi all'interno dello stesso processo. Solo in questo modo si possono raggiungere le massime prestazioni.
Questo approccio è il medesimo usato da Java, quando esso è utilizzato come linguaggio di sviluppo lato server (le famose Servlet).

è stato sviluppato in python un intero web server, chiamato "Zope". Esso permette la pubblicazione di pagine html statiche, ma permette anche il richiamo diretto di programmi python.
Zope dispone di una libreria di oggetti gia' pronti per lo sviluppo di applicazioni sul web. Inoltre esso dispone di una estensione dell'html, denominata "DTML", molto simile al meccanismo ASP di Microsoft (Active Server Page), la quale permette anche ad un programmatore inesperto di essere in grado di costruire dei siti web dinamici senza grossi sforzi.
Chi fosse interessato alla piattaforma Zope puo andare sul sito ufficiale www.zope.org. In questo sito si può scaricare il software per la piattaforma linux e windows, consultare una ricchissima guida ed eseguire il tutorial.

Ti consigliamo anche