Python - vytvoření www stránky
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Python - vytvoření www stránkyPython - vytvoření www stránky

 

Python - vytvoření www stránky

Google       Google       27. 9. 2005       17 082×

Někdy potřebujeme jako výstup našeho programu vytvořit html stránku. Mám zde na mysli lokální vytváření html stránky, ne dynamické generování html, jako třeba pomocí php.

Reklama
Reklama

Jak vytvořit www stránku

Někdy potřebujeme jako výstup našeho programu vytvořit html stránku. Mám zde na mysli lokální vytváření html stránky, ne dynamické generování html, jako třeba pomocí php. Serverové dynamické generování html stránek Python umí také machr, ale o tom někdy jindy.


Pěšky za vozem

Snad i někoho napadne následující jednoduché, přesto v mnoha případech naprosto dostačující a přirozené řešení - čistě texové. Práce s textovými řetězci. Ukazuji v něm také, jak ho uložit a jak automaticky na konci skriptu zavolat prohlížeč, abychom si ihned prohlédli svůj výtvor:


top="<html>  <body bgcolor='lightyellow'>\n"
obsah=raw_input('Jak se jmenujes?: ')
obsah="Ja se jmenuji "+'<b style="color:red">'+obsah+"</b>"+"!\n"
spodek="</body> </html>"
stranka=top+obsah+spodek
print "\n"*2, stranka

nazevHTML='MojePrvniHtml.html'
ulozeno=file(nazevHTML,'w')
ulozeno.write(stranka)
ulozeno.close()

import webbrowser
webbrowser.open(nazevHTML)

Octavia

Tak se svezeme nějakým dobrým autem usmev. Myslím tím, že použijeme nějaký dobrý modul. V Pythonu máme tu výhodu, že za něj nemusíme platit. Modulů na vytváření html stránek je mnoho, opravdu mnoho. Snad proto, že napsat si svůj modul je někdy rychlejší, než ho hledat a naučit se ho používat a také je to dobré programátorské cvičení. Ale to snad později...


HTMLtags

Mě se zalíbil modul HTMLTags. Při jeho stahování si vyzkoušíte i něco navíc. Na této stránce si zkopírujte kód modulu (nikde jsem ho totiž nenašel uložený pro download), vložte v textovém editoru do dokumentu 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.

Co to v tom modulu je?

Zastavil bych se jen u pár věcí. Na tomto scriptu je vidět jednoduchost a mohutnost Pythonu. Neuvěřitelně přehledný, krátký, ale přesto výkonný kód. Těsně před koncem vidíme ve dvou seznamech tagy. Nad tím jediná třída (objektové programování), která definuje metody sčítání (co se stane, když dva tagy budu sčítat), násobení (co se stane, když tag vynásobím číslem ) a tisku (co se stane, když ho budu chtít tisknout). Odstavec #create the classes je pak skutečně high level...

Použití

Uvedu část/výtah z dokumentace přímo z modulu s mými poznámkami a změnami.

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 mrknuti (pohybujeme stále na půdě Open Source, případně GNU/GPL, narozdíl od placených řešení). 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>
A máme tu slibované sčítání, jedna z high-level věcí:
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>

</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)))

A to je vše

Těším na další pokračování seriálu na téma Python a WWW.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Pavel KosinaAutor programuje v Pythonu.
Web    

Nové články

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý