ich will mit cgi ein formular auswerten. allerdings kommen in dem bei action angegeben skript die formulardaten nicht an sobald ich method="post" angebe.
cgi.test() meldet 'No form fields.'
ohne eine method anzugeben funktioniert es, aber da werden die ganzen werte ja dann in der urlleiste mitübergeben und das will ich ja nicht.
weiß jemand woran das liegen könnte?
cgi und post formular
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo roakin!roakin hat geschrieben:ich will mit cgi ein formular auswerten. allerdings kommen in dem bei action angegeben skript die formulardaten nicht an sobald ich method="post" angebe.
Dieses Beispiel funktioniert bei mir:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
******************************************************************************
* CGI-Programm -- Zeigt ein Formular zum Berechnen des BMI an.
*
* Created: 2006-06-21 by Gerold
* Requirements: Python: http://www.python.org
*
* Vorlage war:
*
* korpergrose = input ("Bitte geben Sie nun Ihre Groesse in cm ein:\n")
* realgewicht = input ("Bitte geben Sie ihr Gewicht in Kg ein:\n")
* schritt = korpergrose/100.0
* schritt2 = schritt * schritt
* bmi = realgewicht / schritt2
* print "--------------------------------------------------------------------------"
* print "Ihr BMI betraegt:\n",bmi,"\n"
* print "Der Normal-BMI liegt bei Frauen zwischen 19 und 24, bei Maennern zwischen 20 und 25. Bei Maennern und Frauen ab 65 Jahren gilt ein BMI zwischen 24 und 29 als Normal!"
* print "--------------------------------------------------------------------------"
* input("Bitte druecken sie eine taste um das Programm zu beenden")
*
******************************************************************************
"""
print "Content-Type: text/html;charset=iso-8859-1"
print
import cgi
import cgitb; cgitb.enable()
# Kopf
print \
"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
<title>Body Mass Index</title>
</head>
<body>
"""
# Überschrift
print \
"""
<!-- Überschrift BEGIN -->
<div align="center">
<h1>Body Mass Index</h1>
</div>
<!-- Überschrift END -->
"""
# Daten holen
fs = cgi.FieldStorage()
size_cm = fs.getvalue("size_cm", "")
weight_kg = fs.getvalue("weight_kg", "")
try:
# Prüfen ob Zahlen übergeben wurden
float(size_cm)
float(weight_kg)
berechnung_moeglich = True
except:
berechnung_moeglich = False
if berechnung_moeglich:
# BMI berechnen
schritt = float(size_cm)/100.0
schritt2 = schritt * schritt
bmi = float(weight_kg) / schritt2
# Ergebnis anzeigen
print \
"""
<!-- BMI-Anzeige BEGIN -->
<div align="center">
<p>
Ihr BMI betraegt: <strong>%(bmi).2f</strong>
</p>
<p>
Der Normal-BMI liegt bei Frauen zwischen 19 und 24,
bei Maennern zwischen 20 und 25. <br />
Bei Maennern und Frauen ab 65 Jahren gilt ein BMI
zwischen 24 und 29 als Normal!
</p>
</div>
<!-- BMI-Anzeige END -->
""" % {"bmi": bmi}
# Formular anzeigen
print \
"""
<!-- Eingabeformular BEGIN -->
<form action="bmi.py" method="post">
<table border="1" cellpadding="3" cellspacing="0" align="center">
<!-- Feld für Größe BEGIN -->
<tr>
<td>
Geben Sie nun Ihre Größe in cm ein:
</td>
<td>
<input type="text" name="size_cm" value="%(size_cm)s" />
</td>
</tr>
<!-- Feld für Größe END -->
<!-- Feld für Gewicht BEGIN -->
<tr>
<td>
Geben Sie ihr Gewicht in Kg ein:
</td>
<td>
<input type="text" name="weight_kg" value="%(weight_kg)s" />
</td>
</tr>
<!-- Feld für Gewicht END -->
<!-- Submit-Button BEGIN -->
<tr>
<td colspan="2" align="center">
<input type="submit" value="Berechnen" />
</td>
</tr>
<!-- Submit-Button END -->
</table>
</form>
<!-- Eingabeformular END -->
""" % {
"size_cm": size_cm,
"weight_kg": weight_kg
}
# Fuss
print \
"""
</body>
</html>
"""
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das sieht für mich reichtlich komisch aus... Ich würde das so machen:gerold hat geschrieben:Code: Alles auswählen
print \ """ </body> </html> """
Code: Alles auswählen
print """\
</body>
</html>
"""
