Table des matières

Activité : application Todo liste avec un serveur et une seule page HTML

Présentation

Cette première activité montre comment créer une application Todo liste qui affiche une seule page html avec un contenu statique.

Préparation du projet

Le sous-dossier templates va contenir toutes les pages html du projet

Le résultat à obtenir

Le fichier python de l'application

app.py
#! /usr/bin/python
# -*- coding:utf-8 -*-
 
from flask import Flask, render_template, request
app = Flask(__name__)
 
@app.route('/')
def index():
    return render_template('index.html')
 
if __name__ == '__main__':
    app.run(debug=True)

Explications des instructions

Une fonction décorée par @app.route pour renvoyer une page Web est appelée vue.

ATTENTION :
Mon application ne doit pas avoir deux routes identiques, ou deux vues portant le même nom !

Le fichier HTML de la page Web

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>
      <li><input type="checkbox">Tâche 1</li>
      <li><input type="checkbox">Tâche 2</li>
      <li><input type="checkbox">Tâche 3</li>
    </ul>
  </div>           
</body>
</html>

Explications des instructions

Lancement de l'application

D:\...\projet_1>python app.py
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 881-708-049
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

En cas d'erreur de ce type :

    self.socket.bind(self.server_address)
OSError: [WinError 10013] Une tentative d’accès à un socket de manière interdite par ses autorisations d’accès a été tentée
  • je modifie le fichier de l'application app.py pour utiliser un port réseau différent (par exemple 5005) du port par défaut (5000) en modifiant la ligne suivante :
if __name__ == '__main__':
    app.run(debug=True, port=5005)      

Dès que j'ai lancé l'application, je ne peux plus saisir de commandes dans l'invites de commandes car l'application est lancée. Je ne dois pas fermer la fenêtre sinon l'application de fonctionne plus.

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