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

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

 

Python - vytvoření www stránky

Google       Google       27. 9. 2005       24 726×

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.


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 Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý