====== Activité : afficher une liste de Todo ====== L'affichage d'une liste de tâches consiste : * au **serveur** de fournir la **liste des tâches** avec la page **index.html** ; * à la page **index.html** d'afficher autant de tâches qu'il y en a dans la liste. ===== Modification de la vue / ===== #! /usr/bin/python # -*- coding:utf-8 -*- from flask import Flask, render_template, request, redirect, url_for app = Flask(__name__) #taches : dictionnaire (tableau associatif) de tâches taches=[] #id : identifiant de la tache id = 1 @app.route('/') def index(): return render_template('index.html', taches=taches) @app.route('/ajout', methods=['POST']) def ajout(): # utiliser les variables globales taches et id global taches, id vartache = request.form['tache'] taches.append({"id":id, "libelle":vartache}) #incrémenter id pour la prochaine tâche id = id + 1 return redirect(url_for('index')) if __name__ == '__main__': app.run(debug=True, port=5005) ==== Explications ==== * la vue **/ajout** redirige maintenant vers la vue **/**. Pour cela, il faut **importer** deux autres modules **redirect et url_for** ; * Le dictionnaire **taches** contient une liste de trois taches qui est passée au template **index.html**. Il **existe déjà une route** pour afficher la page **index.html** : * Cette route est **'/'** : je peux alors utiliser la fonction **redirect()** pour faire une redirection vers cette page ; * comme il est **déconseillé** d'écrire plusieurs fois la même route dans une application, je vais faire une redirection en indiquant le nom de la vue **'index'** plutôt que la route ; * J'utilise le nom de la vue **'index'** avec la la fonction **url_for()*** pour **transformer cette vue** en une **adresse exploitable** (une route) par **redirect()**. * le code à ajouter avec les fonctions **redirect()** et **url_for** : return redirect(url_for('index')) * à la place de return render_template('index.html') ====== Utilisation de la liste de tâches dans la page index.html ====== Application Todo

Todo liste

Ajouter une nouvelle tâche :
===== Explications ===== * L'affichage de toutes les tâches de la liste se fait en utilisant **%%{%%%** et **%%%}%%** : * une seul ligne avec la balise **
  • ** suffit, * l'information de la liste est affichée en utilisant **%%{{tache.libelle}}%%** ==== 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]]