Lorsque l’on affiche des widgets de façon dynamique, dans une boucle par exemple, on va parfois avoir besoin d’y insérer des liens.
Plus d’information sur l’affichage de widgets dynamiques.
Ces liens vont devoir être générer dynamiquement.
La première chose à laquelle on dois réfléchir c’est ce qu’il y a au bout du lien.
Prenons l’exemple d’une page affichant des articles, lorsque l’on clique sur un article on aimerai avoir la page donnant les informations de cet article en particulier.
Nous aurons besoin pour créer cette page, de retrouver l’article en question dans la base de données.
Pour cela les informations qu’il nous faut sont : le nom de l’article, ou son ID, on essayera de prendre un élément unique à l’article pour ne pas de tromper de ligne dans la base de données.
Ici nous allons prendre l’ID de l’article.
<a href={{url_for(‘AffichageArticle’, id=element[‘_id’])}}> |
Dans le lien nous voyons ceci : {{url_for(‘AffichageArticle’, id=element[‘_id’])}}
Url_for, nous permet ici d’aller chercher la fonction ‘AffichageArticle’ et de lui transmettre l’id qui nous intéresse. (celui de l’article sur lequel on a cliqué.)
Le lien va nous envoyer vers la fonction ‘AffichageArticle’ il faut donc créer cette fonction avec la route qui correspond.
La route est ce qui va s’afficher dans le navigateur de l’utilisateur, on va donc mettre un truc cohérent pour l’utilisateur.
@app.route("/article/<id>") |
On remarque plusieurs choses, la route contient /, en effet, l’id unique de l’article sera placer en url de la page.
La fonction à un argument (id), ce qui permet d’utiliser l’id dans la fonction pour par exemple comme ici, retrouver l’article dans la base de donnée avec DB_Articles.find_one({‘_id’ : ObjectId(id)}).