nsi:tds:serveur_web20:listtemplate
Table des matières
Module listtemplate
Définit la classe ListTemplate dans listetemplate.py.
Reprend la même idée que le module template mais en prévoyant un ingrédient de plus : nous aurons certains cas où il faudra représenter des tableaux ou des listes – exemple : listes des livres disponibles.
Vous pouvez tester le bon fonctionnement avec le module de test : listtemplate.test.py.
Exemple
On a demandé une liste de livres et la BDD nous a répondu par :
[
{'id':1, 'titre':'Tintin au Tibet', 'auteur':'Hergé'},
{'id':2, 'titre':'Le rouge et le noir', 'auteur':'Stendhal'},
{'id':3, 'titre':'Robinson Crusoé', 'auteur':'William Defoe'},
...
]
Nous souhaitons pouvoir produire le code html d'un tableau suivant :
<table width=100% class='tableau-livres'>
<tr><th>Titre</th><th>Auteur</th></tr>
<tr><td>Tintin au Tibet</td><td>Hergé</td></tr>
<tr><td>Le rouge et le noir</td><td>Stendhal</td></tr>
<tr><td>Robinson Crusoé</td><td>William Defoe</td></tr>
...
</table>
Le tableau est constitué d'une entête, de lignes – une par item – et d'un pied.
Supposons qu'un tel template ait le nom liste-livres, on définira alors 3 fichiers *.tpl :
liste-livres.head.tplcontenant :
<table width=100% class='tableau-livres'> <tr><th>Titre</th><th>Auteur</th></tr>
liste-livres.item.tplcontenant :
<tr><td>{titre}</td><td>{auteur}</td></tr>
liste-livres.foot.tplcontenant :
</table>
Le traitement d'un tel template consistera à :
- produire l'entête,
- le texte pour chaque item,
- le pied,
- coller tout ensemble et renvoyer le résultat.
Interface de la classe ListTemplate
- méthode
__init__(self, template_name:str), oùtemplate_nameest le nom du template, sans l'extension, - constante
FOLDER = 'templates', indique le sous-répertoire où chercher les templates - constante
HEAD = '.head.tpl', extension pour la partie head, - constante
ITEM = '.item.tpl', extension pour la partie item, - constante
FOOT = '.foot.tpl', extension pour la partie foot, - méthode
get_template(self)qui renvoie un 3-uplets contenant les textes des 3 templates,""si un template n'existe pas, - méthode
render(self, data:dict, items:list) -> strqui remplit les templates avec les données fournies et les assemble.dataest un un dictionnaire contenant les données pour l'ensemble du template,itemsune liste de de dictionnaires contenant les données pour chaque item. La méthode renvoie la page en version texte.
nsi/tds/serveur_web20/listtemplate.txt · Dernière modification : de goupillwiki
