HTMLTags aneb jak vytvořit statickou HTML stránku
Na této stránce http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/366000 nebo zde si zkopírujte kód modulu a uložte pod jménem HTMLTags.py. Pozor na velikosti písmen. Místa pro vhodné uložení jsou dvě. Buď v adresáři Lib/site-packages nebo přímo do adresáře, kde bude ležet váš skript.
Použití
Výtah z dokumentace přímo z modulu s malými změnami a doplňky.
Modul HTMLTags definuje třídy pro všechny HTML Tagy, bohužel velkými písmeny, což si však můžete přímo v kódu modulu změnit. Obecně se tag vytváří takto:
t = TAG(innerHTML, key1=val1,key2=val2,...)
takže "print t" vytiskne:
<TAG key1="val1" key2="val2" ...>innerHTML</TAG>
Například:
from HTMLTags import *
t= A('katalog', href="foo")
print t # ==> <A href="foo">katalog</A>
Proměnná t není text, ale instance objektu, která má svoje metody (viz objektové programování v Pythonu). I když "print t" vypadá, jako když to text je. Je to právě způsobeno metodou __str__() ve třídě TAG... Že je to skutečně instance zjistíte takto:
print repr(t) # ==> <HTMLTags.A instance at 0x00935B20>
# nebo
t=t+'ahoj'
# to způsobí chybu, protože chceme sčítat hrušky a jablka (instance a text)
# pokud to opravdu pořebuje, použijeme pomocny tag TEXT:
t=t+TEXT('ahoj')
Argument tagu může být jiný tag, takže můžeme tagy zanořovat do sebe:
print B(I('foo')) ==> <B><I>foo</I></B>
Sčítání:
print B('bar')+INPUT(name="bar") ==> <B>bar</B><INPUT name="bar">
První funkční příklad
# -*- coding: cp1250 -*-
import HTMLTags as H
# abychom nemuseli všude psát HTMLTags, ale stačilo H
# dejte pozor, nikde pak nesmíte použít H jako proměnnou (například H=12)
hlavicka=H.HEAD(H.TITLE('Můj druhý HTML text'))
telo=H.BODY(H.H1('Toto je test')+
H.TEXT('První řádka')+H.BR()+
H.TEXT('Druhá řádka'))
stranka= H.HTML(hlavicka+telo)
nazevHTML='MojeDruheHtml.html'
ulozeno=file(nazevHTML,'w')
ulozeno.write(stranka.__str__())
# nestačí jako argument použít 'stranka'
# je třeba 'jinak a lépe' zavolat print
ulozeno.close()
print unicode(stranka.__str__(),'cp1250')
# kvuli češtině opět bohužel nestačí print stranka
import webbrowser
webbrowser.open(nazevHTML)
Výstup z programu:
<HTML> <HEAD> <TITLE> Můj druhý HTML text </TITLE> </HEAD> <BODY> <H1> Toto je test </H1> První řádka<BR> Druhá řádka ./BODY> # misto leve ostre zavorky je tecka, protoze wiki to brala jako skutecny konec stranky :-( ./HTML>
Tabulky a CSS:
stylesheet = H.LINK(rel="Stylesheet",href="doc.css")
radkyTabulky=H.TEXT() # inicializace proměnné
for i in range(10):
radkyTabulky=radkyTabulky+H.TR(H.TD(i)+H.TD(i*i))
stranka=H.HTML(H.HEAD(stylesheet)+H.BODY(H.TABLE(radkyTabulky)))<*/kod*>