Kasulikke pythoni näitejuppe cgi jaoks: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Resümee puudub
Resümee puudub
87. rida: 87. rida:
</pre>
</pre>


Niimoodi saad teha tsükli üle massiivi:
Niimoodi saad teha tsükli üle kogu massiivi:


<pre>
<pre>
93. rida: 93. rida:
for el in m:
for el in m:
   print el
   print el
</pre>
ja sama asi harilike indeksitega:
<pre>
m=["a","b","c"]
i=0
while i<len(m):
  print m[i]
  i=i+1
</pre>
</pre>



Redaktsioon: 19. oktoober 2011, kell 14:05

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" # mõistlik panna kohe programmi algusse
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


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):

data="mingitekst"
f = open('/tmp/tahvel', 'a')  # faili täielikuks ülekirjutamiseks pane 'a' asemel 'w'
f.write(data)
f.close()

Niimoodi saad programmi töö hoobilt lõpetada:

import sys # see oleks siis kusagil programmi alguses teiste importide seas
...
sys.exit(0)

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:
  print "ei saanud faili avada!"  
  sys.exit(0) # eeldab, et oled varem teinud import sys ja juba trükkinud content-type rea koos tühja vahereaga

Sama, mis eelmine, aga terve fail loetakse ühe stringina:

try:
  f = open('/tmp/myfile', 'r')
  data=f.read()
  f.close()
except:
  print "ei saanud faili avada!"  
  sys.exit(0) 

Niimoodi saad teha tsükli üle kogu massiivi:

m=["a","b","c"]
for el in m:
  print el

ja sama asi harilike indeksitega:

m=["a","b","c"]
i=0
while i<len(m):
  print m[i]
  i=i+1


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>
"""