Kasulikke pythoni näitejuppe cgi jaoks

Allikas: Lambda
Redaktsioon seisuga 19. oktoober 2011, kell 13:42 kasutajalt Tammet (arutelu | kaastöö)
Mine navigeerimisribale Mine otsikasti

Scripti algusse sobib enamasti (cgitb.enable() ainult debugimise ajaks!):

#!/usr/bin/python
import cgi,cgitb

cgitb.enable()

print "Content-type: text/html\n\n"
print "tere tali!"

vormilt data võtmisel tasub kontrollida, kas data tuli, muidu annab Python errori:

formdata = cgi.FieldStorage()

if formdata.has_key("nimi"):
  nimi=formdata['nimi'].value
if formdata.has_key("email"):
  email=formdata['email'].value
if formdata.has_key("raha"):
  raha=formdata['raha'].value
if formdata.has_key("now"):
  now=float(formdata['now'].value)

See kood genereerib automaatselt refreshiva html lehe (now peaks olema arv: sekundid):

  print """
<html>
<head>
<meta 
http-equiv="refresh" 
content='1;url=save.py?refreshing=1&now="""+str(now)+"""'>
</head>
<body>
"""

Niimoodi saad faili lõppu midagi juurde kirjutada (open(...,'a') ehk append mode):

if nimi and email and raha:
  f = open('/tmp/tahvel', 'a')
  data=nimi+","+email+","+raha+","+str(now)+"\n"
  f.write(data)
  f.close()


Niimoodi loed failist korraga kõik read massiivi (iga rida - string - üks massiivielement) ja samas kontrollid, et kui faili pole/lugemisviga, siis handlid seda viga (siin lihtsalt data saab väärtuseks tühja array):

try:
  f = open('/tmp/tahvel', 'r')
  data=f.readlines()
  f.close()
except:
  data=[]  

Html vormi välja autocomplete saad niimoodi maha keerata:

<input type="text" name="nimi" autocomplete="off">