Table des matières

Activité : afficher une liste de Todo

L'affichage d'une liste de tâches consiste :

Modification de la vue /

app.py
#! /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

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().
  return redirect(url_for('index'))
  return render_template('index.html')

Utilisation de la liste de tâches dans la page index.html

index.html
<!DOCTYPE html>
<html lang="fr">
<head>
	<meta charset="UTF-8">
	<title>Application Todo</title>
</head>
<body>
  <h1>Todo liste</h1>
    <div>Ajouter une nouvelle tâche : 
      <form action="/ajout" method="POST">
        <input type="text" name="tache">
        <input type="submit"></div>
      </form>
    </div>
    <div>    
      <ul>
	{% for tache in taches %}
          <li><input type="checkbox">{{tache.libelle}}</li>
	{% endfor %}
      </ul>
    </div>           
</body>
</html>

Explications

Retour à l'activité : Utiliser le framework Flask pour créer un site Web dynamique