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!