TP n°1 : Votre première application WSGI§

  1. Créez deux fichiers hello.py et serveur.py contenant respectivement

    puis lancez serveur.py et connectez vous à http://localhost:12345/.

    Connectez-vous ensuite à

    Comment expliquez-vous ce comportement ?

    Note

    Le HTML retourné par le serveur n’est pas valide, mais nous exploitons le fait que les navigateurs sont assez robustes. Par la suite, nous améliorerons le serveur pour rendre le HTML valide.

  2. Modifiez hello.py pour que

    • le message s’affiche uniquement sur l’URL http://localhost:12345/hello, et que
    • pour toute autre URL, le serveur réponde par un statut 404 (avec un message d’erreur approprié).
  3. Modifiez hello.py pour que, en plus du comportement actuel,

  4. Refactorez hello.py en créant plusieurs fonctions WSGI :

    • hello affichant “Hello world”,
    • goodbye affichant “Goodbye world”,
    • erreur affichant le message d’erreur (avec le statut 404),
    • application déléguant le traitement à l’une des fonctions ci-dessus en fonction de l’URL.
  5. Modifiez les fonctions hello et application, de sorte que

    Pour ce faire, la fonction application modifiera la valeur de PATH_INFO transmise à la fonction hello.

    Note

    Ce point et le suivant mettent en évidence une propriété importante de WSGI: la manière dont les fonctions WSGI peuvent se combiner pour construire des applications complexes.

  6. Modifiez la fonction application pour qu’elle rajoute, avant et après le contenu retourné par les fonctions déléguées, le code nécessaire pour rendre le HTML valide, ainsi qu’un contenu commun à toute les pages (par exemple un titre “Ma première application WSGI”).

    Avertissement

    Il sera éventuellement nécessaire de retirer les en-têtes content-length, car les fonctions déléguées ne peuvent plus connaître à l’avance la taille totale du contenu retourné.

  7. Modifiez la fonction goodbye de sorte que

  8. Modifiez la fonction erreur de sorte que le message d’erreur contienne des liens vers les pages existantes.

    En ce qui concerne la page goodbye, vous incluerez un formulaire permettant de renseigner la valeur de name.

  9. Téléchargez le fichier vers.txt, et modifiez hello.py de sorte que:

  10. Téléchargez le fichier vers.sqlite. Ce fichier est une base de données SQLite contenant une table vers, composée de deux colonnes :

    • Id (entier)
    • Texte (chaîne de caractères)

    Modifiez hello.py de sorte que:

Vous trouverez des indications sur SQLite dans l’annexe Connexion à une base de données.

NB: il convient de créer la connexion à la base de données en dehors des fonction WSGI, de sorte que la connexion ne se fasse qu’une seule fois au chargement du script.