Zde se dozvíte jak Váš program napsaný v Pythonu tyto informace získá od serveru a jakým způsobem je předá zpět prohlížeči.
Nejdříve je třeba poslat prohlížeči hlavičku HTTP, aby prohlížeč věděl, co má od serveru očekávat. První řádek určuje, jaká data budou následovat. Například:
Hlavička může obsahovat více informací než jenom jestli posíláme text či obrázek, ale zatím se s tím spokojíme. Hlavičku ukončí prázdný řádek.
Teď jste již schopni napsat jednoduchý cgi program. V adresáři /usr/lib/cgi-bin/ vytvořte soubor pokus.cgi a zapište do něj následující:
Souboru nastavte příslušná práva ke spouštění. Více k vytvoření spustitelného programu v Pythonu najdete v kapitole Hello World. Aby mohli Váš program spouštět lidé na internetu, je třeba nastavit právo spuštění nejen uživateli, ale i ostatním uživatelům: chmod o+x pokus.cgi.#!/usr/bin/python # # prvni cgi progarm v pythonu print 'Content-type: text/plain; Charset="iso-8859-2"' print '' # hlavicka ukoncena prazdnym radkem print 'Hello World'
http://localhost/cgi-bin/pokus.cgiLocalhost reprezentuje Váš počítač (počítač, na kterém běží server apache), při vstupu z internetu jej nahradíte svou internetovou adresou. Pokud máte soubor uložen v adresáři public_html a Váš login (tedy jméno, pod kterým se přihlašujete k počítači) je rimmer, zadejte
http://localhost/~rimmer/pokus.cgiVáš prohlížeč by měl zobrazit Hello World. Pokud se nezobrazí nic, pak jste zadali adresu špatně. Skontrolujte si Vaší konfiguraci apache. Pokud se Vám vrátí zdrojový text programu pokus.cgi, pak je buď v adresáři ve kterém server neumožňuje programy spouštět, nebo jste nezadali správně práva spuštění k souboru pokus.cgi. Třetí možností chyby by bylo, kdyby jste v cgi programu zadali špatně hlavičku - pro jistotu dbejte na velikost písmen. Pokud uděláte chybu v programu Pythonu (třeba v syntaxi, nebo když dojde k nějaké výjimce), vrátí Vám server Internal Server Error.
Možná Vás však budou zajímat informace, jako například který webovský prohlížeč si informace žádá, z jakého počítače atd. Tyto informace server předává programu jako proměnné prostředí. Kdesi v paměti vytvoří takovou tabulku, která má dva sloupce: NÁZEV+HODNOTA. Například pod názvem HTTP_USER_AGENT se krývá identifikace prohlížeče, který si žádá od programu data.
Tyto informace získáte pomocí Pythonovského modulu os a jeho instance environ. Spusťte Python v interaktivním režimu, načtěte modul os a vytiskněte environ.
rimmer: $ python
Python 2.1.3 (#1, Apr 20 2002, 10:14:34)
[GCC 2.95.4 20011002 (Debian prerelease)] on linux2
Type "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ
{'HOME': '/home/rimmer', '_': '/usr/bin/python', 'PS1': '\\u: \\$ ', 'LS_OPTION
S': '--color', 'MAIL': '/var/mail/rimmer', 'USER': 'rimmer', 'LOGNAME': 'rimmer
', 'HUSHLOGIN': 'FALSE', 'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr
/bin:/sbin:/bin:/usr/bin/X11', 'OLDPWD': '/usr/lib', 'SHLVL': '1', 'PWD': '/usr
/lib/cgi-bin','SHELL': '/bin/bash', 'TERM': 'linux', 'HZ': '100'}
>>>
Hodnoty jsou v instanci environ uloženy jako slovník. Všimněte si, že environ
neobsahuje slibovanou hodnotu HTTP_USER_AGENT. Tuto a jí podobné
hodnoty totiž do proměnných prostředí přidává server. Upravte cgi
program pokus.cgi tak, aby vypisoval všechny klíče a
proměnné:
#!/usr/bin/python
#
print 'Content-type: text/html; Charset="iso-8859-2"'
print '' # hlavicka ukoncena prazdnym radkem
print '<.phpl><body>'
import os
for i in os.environ.keys():
print '<b>',i,'</b>',os.environ[i],'<br>'
print '</body></html>'
<-- Python -->
