Python jako motor webu -- formuláře

Formuláře

Webovému serveru lze s požadavkem o obsah (stránku) zaslat také parametry, volby. Data lze předat pomocí html formulářů. Jde tedy o html značky <form> a <input>.

<form>
 <p>
    <input type="text" name="vstup" value="hodnota" />
    <input type="checkbox" name="anone" /> Ano nebo ne
 </p><p>
     <input type="submit" name="tlac" value="Ano"/>
     <input type="submit" name="tlac" value="Ne"/>
 </p>   
</form>

`--> stáhnout

Ano nebo ne

GET a POST

GET a POST jsou dvě základní metody protokolu http. Metoda GET ukládá data to URL. Proto je následující heslo po stisknutí entru viditelné v adresním řádku prohlížeče.

<form method="get">
    <input type="password" name="vstup" value="" />
</form>

`--> stáhnout

Z toho důvodu data, která chceme skrýt nebo data, která jsou příliš objemná zasíláme pomocí metody POST.

<form method="post">
    <input type="password" name="vstup" value="" />
</form>

`--> stáhnout

Poznámka: To, že data nejsou na první pohled vidět neznamená, že by putovala sítí šifrovaně. Jsou pouze skrytá, ale ne zabezpečená.

Příklad v Pythonu

Python disponuje modulem CGI, pomocí kterého lze jednoduše přebírat parametry zaslané skriptu, bez ohledu na to, zda byla použita metoda GET nebo POST. Základem je objekt FieldStorage.

#!/usr/bin/python
# -*- coding: utf8 -*-

import cgi

print "Content-Type: text/html; Charset=utf-8;\n"

print "<h1>Funguje mi to!!! Huráááá!!!</h1>"

print """
<h1>Formulář, co ho odesílám</h1>
<form method="get">
 <p>
    <input type="text" name="vstup" value="hodnota" />
    <input type="checkbox" name="anone" /> Ano nebo ne
 </p><p>
    <input type="submit" name="odeslat" />
 </p>   
</form>

<h1>Data, která jsem dostal</h1>
"""

# načtu data odeslané pomocí formuláře
data = cgi.FieldStorage()

try:
    print "<p>vstup:",data["vstup"].value ,"</p>"
except:
    print """<p style="color:red;">Nedostal jsem data.</p>"""

# tento způsob je trošku bezpečnější...

print '''
<h2>Nebo...</h2>
<p>vstup:,
'''
print "Vstup:", data.getvalue('vstup') 

print '''</p> 
<pre>
'''
for k in data.keys():
    print k,'=', data[k].value
print '\n</pre>'

`--> stáhnout


Odkazy

PSK3-16

Název školy: Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3
Autor: Ing. Marek Nožka
Anotace: Předávání dat webové aplikaci -- webové formuláře
Vzdělávací oblast: Informační a komunikační technologie
Předmět: Počítačové sítě a komunikační technika (PSK)
Tematická oblast: Operační systém Linux/Unix
Výsledky vzdělávání: Žák vytvoří webový formulář a odešle ho webové aplikaci
Klíčová slova: Linux, Unix, Apache, Python, CGI
Druh učebního materiálu: Online vzdělávací materiál
Typ vzdělávání: Střední vzdělávání, 4. ročník, technické lyceum
Ověřeno: VOŠ a SPŠE Olomouc; Třída: 4L
Zdroj: Vlastní poznámky, Vilém Vychodil: Linux Příručka českého uživatele