Costruire gli URL in Flask

La funzione url_for() è molto utile per creare URL in modo dinamico per una funzione specifica. La funzione accetta come primo parametro il nome di una funzione e poi uno o più […]

Avatar di gbfactory
gbfactory 6 Luglio 2022

La funzione url_for() è molto utile per creare URL in modo dinamico per una funzione specifica. La funzione accetta come primo parametro il nome di una funzione e poi uno o più parola chiave, ciascuna corrispondente alla parte variabile dell'URL.

Segue uno script di esempio della funzione appena descritta:

from flask import Flask, redirect, url_for
app = Flask(__name__)

@app.route('/admin')
def pannello_admin():
   return 'Benvenuto admin del sito!'

@app.route('/utente/<guest>')
def pannello_utente(guest):
   return 'Benvenuto %s come Ospite!' % guest

@app.route('/profilo/<nome>')
def pannello_profilo(nome):
   if nome =='admin':
      return redirect(url_for('pannello_admin'))
   else:
      return redirect(url_for('pannello_utente', guest = nome))

if __name__ == '__main__':
   app.run(debug = True)

Lo script precedente ha una funzione user(name) che accetta un valore al suo argomento dall'URL.

La funzione User() controlla se un argomento ricevuto corrisponde a "admin" o meno. Se corrisponde, l'applicazione viene reindirizzata alla funzione pannello_admin() utilizzando url_for(), altrimenti alla funzione pannello_utente() passando l'argomento ricevuto come parametro guest.

Salva il codice sopra ed eseguilo dalla shell Python.

Aprendo il browser e andando all'URL http://localhost:5000/profilo/admin

Verremo reindirizzati alla seguente pagina:

Ciao Admin

Se invece visitiamo l'URL http://localhost:5000/profilo/pincopallino

La risposta dell'applicazione cambierà in:

Benvenuto pincopallino come Ospite!