Kasulikke pythoni näitejuppe cgi jaoks: erinevus redaktsioonide vahel
Resümee puudub |
Resümee puudub |
||
| 5. rida: | 5. rida: | ||
import cgi,cgitb | import cgi,cgitb | ||
cgitb.enable() | cgitb.enable() # see peaks siis kusagil üpris algul olema | ||
print "Content-type: text/html\n\n" | print "Content-type: text/html\n\n" | ||
| 27. rida: | 27. rida: | ||
</pre> | </pre> | ||
Niimoodi saad juhusliku täisarvu: | |||
<pre> | |||
import random # see oleks siis kusagil programmi alguses teiste importide seas | |||
... | |||
oppmove=random.randint(0, 2) # täisarv kas 0,1,2. Juhusliku floati jaoks 0...1 tee random.random() | |||
</pre> | |||
Niimoodi saad teha stringi täisarvuks ja täisarvu (või mistahes muu data!) stringiks: | |||
<pre> | <pre> | ||
strx="1" | |||
x=int(x) | |||
uusstrx=str(x) | |||
</pre> | </pre> | ||
NB! Kui proovid stringile arvu liita a la "abc"+1 saad errori. Enne pead arvu tegema stringiks a la "abc"+str(1) | |||
Niimoodi saad faili lõppu midagi juurde kirjutada (open(...,'a') ehk append mode): | Niimoodi saad faili lõppu midagi juurde kirjutada (open(...,'a') ehk append mode): | ||
<pre> | <pre> | ||
if | if mymove and oppmove: | ||
f = open('/tmp/tahvel', 'a') | f = open('/tmp/tahvel', 'a') | ||
data= | data=mymove+" "+oppmove+"\n" | ||
f.write(data) | f.write(data) | ||
f.close() | f.close() | ||
| 57. rida: | 63. rida: | ||
<pre> | <pre> | ||
try: | try: | ||
f = open('/tmp/ | f = open('/tmp/myfile', 'r') | ||
data=f.readlines() | data=f.readlines() | ||
f.close() | f.close() | ||
| 63. rida: | 69. rida: | ||
data=[] | data=[] | ||
</pre> | </pre> | ||
Sama, mis eelmine, aga terve fail loetakse ühe stringina: | |||
<pre> | |||
try: | |||
f = open('/tmp/myfile', 'r') | |||
data=f.read() | |||
f.close() | |||
except: | |||
data="" | |||
</pre> | |||
Html vormi välja autocomplete saad niimoodi maha keerata: | Html vormi välja autocomplete saad niimoodi maha keerata: | ||
| 68. rida: | 87. rida: | ||
<pre> | <pre> | ||
<input type="text" name="nimi" autocomplete="off"> | <input type="text" name="nimi" autocomplete="off"> | ||
</pre> | |||
See kood genereerib automaatselt refreshiva html lehe (now peaks olema arv: sekundid): | |||
<pre> | |||
print """ | |||
<html> | |||
<head> | |||
<meta | |||
http-equiv="refresh" | |||
content='1;url=save.py?refreshing=1&now="""+str(now)+"""'> | |||
</head> | |||
<body> | |||
""" | |||
</pre> | </pre> | ||
Redaktsioon: 19. oktoober 2011, kell 13:51
Scripti algusse sobib enamasti (cgitb.enable() ainult debugimise ajaks!):
#!/usr/bin/python import cgi,cgitb cgitb.enable() # see peaks siis kusagil üpris algul olema 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)
Niimoodi saad juhusliku täisarvu:
import random # see oleks siis kusagil programmi alguses teiste importide seas ... oppmove=random.randint(0, 2) # täisarv kas 0,1,2. Juhusliku floati jaoks 0...1 tee random.random()
Niimoodi saad teha stringi täisarvuks ja täisarvu (või mistahes muu data!) stringiks:
strx="1" x=int(x) uusstrx=str(x)
NB! Kui proovid stringile arvu liita a la "abc"+1 saad errori. Enne pead arvu tegema stringiks a la "abc"+str(1)
Niimoodi saad faili lõppu midagi juurde kirjutada (open(...,'a') ehk append mode):
if mymove and oppmove:
f = open('/tmp/tahvel', 'a')
data=mymove+" "+oppmove+"\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/myfile', 'r')
data=f.readlines()
f.close()
except:
data=[]
Sama, mis eelmine, aga terve fail loetakse ühe stringina:
try:
f = open('/tmp/myfile', 'r')
data=f.read()
f.close()
except:
data=""
Html vormi välja autocomplete saad niimoodi maha keerata:
<input type="text" name="nimi" autocomplete="off">
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> """