English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
È possibile costruire URL dinamici aggiungendo una parte variabile ai parametri della regola. Questa parte variabile è contrassegnata come <variable-name>. Viene passata come parametro chiave alla funzione associata alla regola.
Nell'esempio seguente, il parametro della regola del decoratore route() contiene una parte variabile aggiunta al segmento di variabile /hello. Pertanto, se si inserisce l'URL nel browser: http://localhost:5000/hello/w3codebox, allora 'w3codebox' verrà fornito come parametro alla funzione hello().
Rifati al seguente codice -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Date: 2020-08-08 from flask import Flask app = Flask(__name__) @app.route('/hello/<name>') def hello_name(name): return 'Hello %s!' % name if __name__ == '__main__': app.run(debug=True)
Salva lo script sopra nel file: hello.py e esegui dal Python Shell.
A questo punto, apri il browser e inserisci l'URL => http://localhost:5000/hello/w3codebox. Vedrai Hello w3codebox nel browser
Oltre al segmento di variabile stringa predefinito, possono essere utilizzati i seguenti costrutti dei convertitori -
Numero | Convertitore | Descrizione |
1 | int | Accetta interi |
2 | float | Per valori a virgola mobile |
3 | path | Accetta il simbolo di slash (/) come separatore di directory |
Nella seguente codice, vengono utilizzati tutti questi costruttori.
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Date: 2020-08-08 from flask import Flask app = Flask(__name__) @app.route('/blog/<int:postID>') def show_blog(postID): return 'Blog Numero %d' % postID @app.route('/rev/<float:revNo>') def revision(revNo): return 'Numero di Revisione %f' % revNo if __name__ == '__main__': app.run()
Esegui il codice sopra dal Python Shell. Accedi all'URL nel browser => http://localhost:5000/blog/11.
Il valore numerico dato viene utilizzato come parametro della funzione show_blog(). Il browser mostra l'output seguente -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Date: 2020-08-08 Blog Numero 11
Inserisci questo URL nel browser - http://localhost:5000/rev/1.1
La funzione revision() accetta un numero decimale come parametro. I seguenti risultati appaiono nella finestra del browser -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Date: 2020-08-08 Numero di revisione 1.100000
Le regole di URL di Flask si basano sul modulo di routing di Werkzeug. Questo garantisce che l'URL formato sia unico e basato sul precedente stabilito da Apache.
Considera le regole definite nel seguente script -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Date: 2020-08-08 from flask import Flask app = Flask(__name__) @app.route('/flask') def hello_flask(): return 'Hello Flask' @app.route('/python/') def hello_python(): return 'Hello Python' if __name__ == '__main__': app.run()
Le due regole sembrano molto simili, ma nella seconda regola, è stato utilizzato un trattino obliquo alla fine (/). Pertanto, è diventato un URL standard. Pertanto, usando /python o /python/ si ottiene lo stesso output. Tuttavia, nel primo caso, l'URL:/flask/ porta a una pagina 404 Not Found.