Kasulikke pythoni näitejuppe cgi jaoks: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
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>


See kood genereerib automaatselt refreshiva html lehe (now peaks olema arv: sekundid):
 
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>
  print """
strx="1"
<html>
x=int(x)
<head>
uusstrx=str(x)
<meta
http-equiv="refresh"
content='1;url=save.py?refreshing=1&now="""+str(now)+"""'>
</head>
<body>
"""
</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 nimi and email and raha:
if mymove and oppmove:
   f = open('/tmp/tahvel', 'a')
   f = open('/tmp/tahvel', 'a')
   data=nimi+","+email+","+raha+","+str(now)+"\n"
   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/tahvel', 'r')
   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>
"""