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

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

Python - vytvoření www stránky

Google       Google       27. 9. 2005       21 259×

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 Konference: Moderní informační systémy podporují automatizaci

Konference: Moderní informační systémy podporují automatizaci

Současná situace v šíření onemocnění Covid-19 klade na řadu firem nové nároky a mnohé z nich jsou nyní více než kdy jindy závislé na nejmodernějších informačních technologiích. Proto i v oblasti podnikových informačních systémů vidíme rostoucí důraz na automatizaci nebo na důslednou integraci. Také o těchto trendech se bude mluvit na konferenci Firemní informační systémy, která se koná 24.9.2020 v pražském Kongresovém centru Vavruška na Karlově náměstí.

Reklama
Reklama
Obrázek ke článku Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Za cenu šesti dolarů lze celkem bez obtíží koupit nový, líbivě vyhlížející flash disk. Přidaná hodnota, které se vám spolu s ním dostane, už tak moc líbivá není. To, co se před pár sekundami tvářilo jako externí disk, se po připojení k počítači změní v důmyslné elektrické křeslo, které vaše zařízení v onen příslovečný škvarek promění za pár sekund. Cílovou skupinou pro koupi takových zařízení by mohli být záškodníci, kteří by tímto způsobem osnovali pomstu třeba vůči záletnému partnerovi. 

Obrázek ke článku Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Snad nikdy není špatná příležitost na investici do hodnotného vzdělání. Obzvlášť v případě, že absolvent dovede teoretické poznatky přetavit v praktické dovednosti, využitelné při řešení problémů i v komunikaci. Právě na to se specializuje studijní program MBA Řízení informačních technologií, vyučovaný na Business Institutu.

Obrázek ke článku Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Pandemie Covid-19 otřásla trhem práce v základech. Dopady krize pocítilo celkově až 45 % zaměstnanců. Není divu, že čím dál větší jistotu přináší obor IT. Ten zůstal krizí téměř nepoznamenán a při nutnosti začít dělat věci na dálku se ještě více ukázalo, jak moc mnohé firmy kvalitní IT potřebují. Do IT nyní přicházejí začátečníci, kteří v něm vidí lukrativní budoucnost a jistotu, ale i freelanceři a zaměstnanci z oborů zasažených krizí

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