Salta al contenuto principale

Come creare una pagina web con Python

Profile picture for user luca77king

Avete mai desiderato costruire una pagina web da zero? Con Python è più facile di quanto pensiate! Python è un potente linguaggio di programmazione che consente agli sviluppatori di creare pagine web utilizzando HTML, CSS e JavaScript.

Innanzitutto, per creare una pagina web con Python, è necessario avere familiarità con il protocollo HTTP, il linguaggio HTML e con i concetti base di networking.

Il protocollo HTTP (HyperText Transfer Protocol) è il protocollo di comunicazione che viene utilizzato per trasmettere dati su Internet. È uno dei protocolli fondamentali del World Wide Web e viene utilizzato per trasferire le risorse web, come le pagine HTML, le immagini e i file audio e video. Il protocollo HTTP è basato sul modello client-server, in cui un client (come un browser web) richiede una risorsa a un server web e il server web risponde con la risorsa richiesta.

Il protocollo HTTP utilizza i verbi di richiesta per indicare l'azione che il client desidera eseguire sul server. I verbi di richiesta più comuni sono:

  • GET: richiede una risorsa dal server (ad esempio, una pagina HTML o un'immagine)
  • POST: invia dati al server per elaborazione (ad esempio, dati di un form)
  • PUT: carica una risorsa sul server
  • DELETE: elimina una risorsa dal server

Ci sono altri verbi di richiesta, come HEAD, OPTIONS, PATCH e TRACE, ma questi sono meno comuni.

Ma veniamo al punto dell'articolo. È possibile utilizzare le librerie built-in di Python per gestire le richieste HTTP e creare le risposte. Ecco i passaggi da seguire:

Importiamo quindi due classi dalla libreria http.server: ThreadingHTTPServer e BaseHTTPRequestHandler

from http.server import ThreadingHTTPServer, BaseHTTPRequestHandler

La classe BaseHTTPRequestHandler, invece, fornisce un'implementazione base di un gestore di richieste HTTP. Questa classe viene utilizzata come classe base per creare un gestore di richieste personalizzato, che può essere utilizzato per creare risposte personalizzate alle richieste HTTP.

class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b'<html><body><h1>Ciao, mondo!</h1></body></html>')

In questo esempio, stiamo creando una nuova classe SimpleHTTPRequestHandler che eredita dalla classe BaseHTTPRequestHandler. Abbiamo sovrascritto il metodo do_GET per inviare una risposta con il messaggio "Ciao Mondo!" come corpo della risposta.

La classe ThreadingHTTPServer è una classe server HTTP che utilizza il threading per gestire le richieste in modo asincrono. In questo modo, il server può gestire più richieste contemporaneamente e fornire una risposta più rapida ai client.

PORT = 4200
httpd = ThreadingHTTPServer(('localhost', PORT), SimpleHTTPRequestHandler)
httpd.serve_forever()

Qui abbiamo creato un'istanza del server HTTP utilizzando la classe ThreadingHTTPServer importata dalla libreria http.server. Abbiamo specificato che il server dovrebbe essere in ascolto sulla porta 4200 del nostro localhost, passando una tupla con i valori 'localhost' e 4200 come primo argomento della classe ThreadingHTTPServer.

Inoltre, abbiamo specificato la classe da utilizzare per gestire le richieste HTTP, ovvero SimpleHTTPRequestHandler. Infine, abbiamo avviato il server HTTP chiamando il metodo serve_forever() dell'istanza del server. Questo farà in modo che il server sia in ascolto continuo per le richieste HTTP provenienti dalla porta specificata.

Avvia il server eseguendo il file Python. Apri il browser e visita l'indirizzo http://localhost:4200 per visualizzare la pagina web.

Nota che questa è solo una guida di base per creare un server web Python. È possibile utilizzare molte altre librerie e tecnologie per creare un sito web più complesso e interattivo. Tuttavia, questo esempio dovrebbe fornirti un'idea di base di come creare una pagina web con Python utilizzando le librerie built-in.