|
|||||||
1. Introduction
2. Installation 3. Le serveur Web 4. Options de configuration 5. Travailler avec Apache, LightTPD ou Xitami 6. Programmation 7. Debogage 8. Scripts Python 9. Scripts CGI 10. Services Karrigell 11. Python Inside HTML 12. HTML Inside Python 13. HTMLTags - génère du HTML en Python 14. Inclure des documents 15. Sessions 16. Authentification 17. Traduction et Unicode |
13. HTMLTags - génère du HTML en PythonLe module HTMLTags définit une classe pour toutes les balises HTML valides, écrites en majuscules. Pour créer un élément en HTML, la syntaxe générale est :
t = TAG(innerHTML, key1=val1,key2=val2,...)de façon que print t donnera :
<TAG key1="val1" key2="val2" ...>innerHTML</TAG>Par exemple : print A('bar', href="foo") ==> <A href="foo">bar</A> Pour générer des attibuts HTML sans valeur, donnez-leur la valeur
print OPTION('foo',SELECTED=True,value=5) ==> <OPTION value="5" SELECTED>Pour des balises sans fermeture telles que <IMG> ou <BR>, l'instruction print ne génère pas de balise fermante
L'argument innerHTML peut être une instance d'une classe HTML, on peut donc imbriquer des balises, de cette façon :
print B(I('foo')) ==> <B><I>foo</I></B> Les instances des classes HTML supportent l'addition :
print B('bar')+INPUT(name="bar") ==> <B>bar</B><INPUT name="bar"> ainsi que la répétition :
print TH(' ')*3 ==> <TD> </TD><TD> </TD><TD> </TD> Si vous avez une liste d'instances, vous ne pouvez pas concaténer les éléments
avec
Sum([ TR(TD(i)+TD(i*i)) for i in range(100) ])génère les lignes d'un tableau qui montre les carrés des entiers de 0 à 99 L'argument innerHTML peut être une chaîne de caractères, mais on ne peut pas concaténer une chaîne et une instance d'une classe HTML, comme dans :
H1('O rage ! ' + B('O désespoir !'))Pour ceci, servez-vous d'une classe appelée TEXT , qui ne génèrera
pas de balise :
H1(TEXT('O rage !') + B('O désespoir !'))Un document simple peut être produit par :
print HTML( HEAD(TITLE("Document d'essai")) + BODY(H1("Ceci est un document d'essai")+ TEXT('Première ligne')+BR()+ TEXT('Deuxième ligne')))Ce qui donne :
<HTML> <HEAD> <TITLE>Document d'essai</TITLE> </HEAD> <BODY> <H1>Ceci est un document d'essai</H1> Première ligne <BR> Deuxième ligne </BODY> </HTML>Si le document est plus complexe, il est plus lisible de créer d'abord les éléments, puis d'imprimer le résultat d'ensemble en une seule instruction. Par exemple :
stylesheet = LINK(rel="Stylesheet",href="doc.css") header = TITLE('Collection de disques')+stylesheet titre = H1('Ma collection de disques') lignes = Sum ([TR(TD(disque.titre,Class="titre")+TD(disque.artiste,Class="Artiste")) for disque in disques]) table = TABLE(TR(TH('Titre')+TH('Artiste')) + lignes) print HTML(HEAD(header) + BODY(titre + table)) |