Table des matières

Le module html

Défini dans html.py, c'est un module permettant de regrouper les fonctions concernant les pages html, notamment les erreurs et les problèmes d'entêtes. Définit la classe Html.

Quand on parle de fichiers html ci-dessous, on suppose qu'ils se trouvent dans FileManager.BASE_URL. La classe nécessitera d'ailleurs l'utilisation de la classe FileManager.

Vous pouvez tester le bon fonctionnement avec le module de test : html.test.py.

Initialisation

Un objet Html devra représenter une page. Lors de la création de l'objet on pourra préciser le contenu de plusieurs façons :

Mais comment indiquer ce choix ? Python propose une syntaxe élégante :

# on souhaite pouvoir appeler une fonction fct avec diverses options :
fct(error_code=200)
fct(content='pwet')
fct(filename='exemple.html')

# voici comment définir la fonction
def fct(**options):
    # options contient un dictionnaire avec les options
    # par ex, dans le premier cas, options = {"error_code":200}
    # dans le 2e cas, options = {"content":"pwet"}
    # dans le 3e cas, options = {"filename":"exemple.html"}
    # il suffit donc de tester ce que contient options pour savoir quoi faire !

Cette explication vous aidera pour la méthode __init__

Interface de la classe Html

Entêtes

Voici par exemple l'entête pour un chargement avec succès (code 200)

HTTP/1.1 200 OK
host: le site local
Content-Type: text/html

Mais il y a des caractères cachés extrêmement importants. À chaque saut de ligne \r\n et deux fois \r\n à la fin. On pourra donc l'écrire :

"HTTP/1.1 200 OK\r\nhost: le site local\r\nContent-Type: text/html\r\n\r\n"

Pour une erreur 404

HTTP/1.1 404 Not Found\r\n
host: le site local\r\n
Content-Type: text/html\r\n\r\n

ou encore pour une erreur 501

HTTP/1.1 501 Not Implemented
host: le site local
Content-Type: text/html\n

Ces trois codes suffisent pour l'instant. Au besoin vous trouverez les autres facilement sur internet.

Pages d'erreur par défaut

Pour une erreur 404 :

<!DOCTYPE html PUBLIC><html><head><meta charset="UTF-8"></head><body>Erreur 404 : Fichier n'existe pas.</body></html>

Pour une erreur 501 :

<!DOCTYPE html PUBLIC><html><head><meta charset="UTF-8"></head><body>Erreur 501 : Erreur sur le serveur.</body></html>