====== Activité : les routes avec Flask ======
===== Définir une route à partir d'un lien =====
==== dans la page HTML ====
* une URL dans un lien en précisant le nom de **la route** :
accéder à la page exemple
* une URL dans un lien en utilisant la fonction **url_for()** qui précise le nom de **la vue** :
accéder à la page exemple
==== dans la page python de l'application ====
* pour la réponse du serveur, utilisation d'une page HTML comme template avec des variables
# @ est un décorateur et app.route définit la route /exemple
@app.route('/exemple')
def exemple():
# la fonction exemple est une vue
# definir les actions à faire
# definir le contenu des variables à utiliser dans le template
donnee = "Information à afficher"
render_template('exemple.html', message=donnee)
* pour la réponse du serveur, utilisation d'une redirection en précisant la vue : **Méthode conseillée**
@app.route('/autreexemple')
def exemple():
# definir les actions à faire
return redirect(url_for('exemple'))
* pour la réponse du serveur, utilisation d'une redirection en précisant la vue : **Méthode NON conseillée**
@app.route('/autreexemple')
def exemple():
# definir les actions à faire
return redirect('/exemple')
===== Définir une route à partir d'un formulaire =====
==== dans la page HTML ====
* une URL dans un formulaire en précisant la méthode HTTP POST
==== dans la page python de l'application ====
* filtrage sur la méthode POST
# @ est un décorateur et app.route définit la route /exemple
@app.route('/exemple', methods=['POST'])
def exemple():
# la fonction exemple est une vue
donnee = "Information à afficher"
render_template('exemple.html', message=donnee)
===== Définir une route personnalisée =====
==== dans la page HTML ====
* une URL dans un lien en précisant le nom de **la route** et en ajoutant une information : ici 1
accéder à la page exemple
* une URL dans un lien en utilisant la fonction **url_for()** qui précise le nom de **la vue** et le nom de 'information supplémentaire:
accéder à la page exemple
==== dans la page python de l'application ====
* un contrôle sur le type entier de l'information supplémentaire est ajouté
@app.route('/exemple/')
def exemple(id):
# le paramètre id reçu est passé en paramètre à la fonction
# definir les actions à faire
render_template('exemple.html')
==== Retour à l'activité : Utiliser le framework Flask pour créer un site Web dynamique ====
* [[.:flask_01|Activité : Utiliser le framework Flask pour créer un site Web dynamique]]