python:pythoncgi:cgiformulare
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| python:pythoncgi:cgiformulare [2023/08/23 08:08] – lutz | python:pythoncgi:cgiformulare [2024/05/24 07:48] (aktuell) – lutz | ||
|---|---|---|---|
| Zeile 29: | Zeile 29: | ||
| Neu ist das Attribut '' | Neu ist das Attribut '' | ||
| - | <code python script03_auswertung.html> | + | <code python script03_auswertung.py> |
| # | # | ||
| import cgi | import cgi | ||
| Zeile 67: | Zeile 67: | ||
| </ | </ | ||
| + | Im Auswertungsscript wird nun eine Webseite erzeugt, die die Formulardaten auswertet. Der wichtigste Befehl zum Auswerten des Formulars ist das Importieren der CGI-Bibliothek '' | ||
| + | Anschließend werden der Kopf- und der Fußquelltext der Seite als Variablen angelegt. | ||
| + | Danach wird mit dem Befehl '' | ||
| + | Nun wird mit mehreren '' | ||
| + | |||
| + | **Aufgabe 1** | ||
| + | |||
| + | Teste die Scripte. Lass dir weitere Formularelemente einfallen, die du dann auswertest. | ||
| + | |||
| + | |||
| + | Das Ganze kann man auch in einer Datei zusammenfassen: | ||
| + | |||
| + | <code python script04.py> | ||
| + | # | ||
| + | import cgi | ||
| + | |||
| + | header = ''' | ||
| + | < | ||
| + | |||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | | ||
| + | </ | ||
| + | < | ||
| + | ''' | ||
| + | |||
| + | footer = ''' | ||
| + | </ | ||
| + | </ | ||
| + | ''' | ||
| + | |||
| + | form = cgi.FieldStorage() | ||
| + | |||
| + | |||
| + | print(header) | ||
| + | if form.getvalue(" | ||
| + | if form.getvalue(" | ||
| + | name = form.getvalue(" | ||
| + | print("< | ||
| + | if form.getvalue(" | ||
| + | alter = int(form.getvalue(" | ||
| + | print("< | ||
| + | if form.getvalue(" | ||
| + | print("< | ||
| + | if form.getvalue(" | ||
| + | print("< | ||
| + | else: | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | print("</ | ||
| + | |||
| + | |||
| + | print(footer) | ||
| + | </ | ||
| + | |||
| + | Wie funktioniert nun dieses Script? | ||
| + | |||
| + | Im Prinzip ist der Aufbau ähnlich wie bei script03_auswertung.py. Der Unterschied ist, dass zunächst mit der if-Anweisung getestet wird, ob im Formularelement " | ||
| + | |||
| + | **Aufgabe 2** | ||
| + | |||
| + | Schreibe dein geändertes Script so um, dass es in einer Datei funktioniert. | ||
| + | |||
| + | |||
| + | |||
| + | Ein komplexes Beispiel für ein Kopfrechenprogramm: | ||
| + | |||
| + | <code python script06.py> | ||
| + | # | ||
| + | import cgi, cgitb, random | ||
| + | |||
| + | cgitb.enable() | ||
| + | |||
| + | header = ''' | ||
| + | < | ||
| + | |||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | <link href=" | ||
| + | </ | ||
| + | < | ||
| + | <div class=" | ||
| + | | ||
| + | | ||
| + | ''' | ||
| + | |||
| + | footer = ''' | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | ''' | ||
| + | |||
| + | |||
| + | form = cgi.FieldStorage() | ||
| + | |||
| + | |||
| + | print(header) | ||
| + | print("< | ||
| + | |||
| + | if form.getvalue(" | ||
| + | ro = form.getvalue(" | ||
| + | anz = int(form.getvalue(" | ||
| + | opmin1 = int(form.getvalue(" | ||
| + | opmax1 = int(form.getvalue(" | ||
| + | opmin2 = int(form.getvalue(" | ||
| + | opmax2 = int(form.getvalue(" | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | if ro == ' | ||
| + | print("< | ||
| + | for i in range(anz): | ||
| + | a = random.randint(opmin1, | ||
| + | b = random.randint(opmin2, | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | elif ro == ' | ||
| + | print("< | ||
| + | for i in range(anz): | ||
| + | while(True): | ||
| + | a = random.randint(opmin1, | ||
| + | b = random.randint(opmin2, | ||
| + | if a>b: | ||
| + | break | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | elif ro == ' | ||
| + | print("< | ||
| + | for i in range(anz): | ||
| + | a = random.randint(opmin1, | ||
| + | b = random.randint(opmin2, | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | elif ro == ' | ||
| + | print("< | ||
| + | for i in range(anz): | ||
| + | while(True): | ||
| + | a = random.randint(opmin1, | ||
| + | b = random.randint(opmin2, | ||
| + | if a > b and a%b == 0 and b > 1: | ||
| + | break | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | print("</ | ||
| + | elif form.getvalue(" | ||
| + | ro = form.getvalue(" | ||
| + | anz = int(form.getvalue(" | ||
| + | if ro == ' | ||
| + | print("< | ||
| + | for i in range(anz): | ||
| + | if form.getvalue(" | ||
| + | e = int(form.getvalue(" | ||
| + | else: | ||
| + | e = None | ||
| + | a = int(form.getvalue(" | ||
| + | b = int(form.getvalue(" | ||
| + | if e == None: | ||
| + | print("< | ||
| + | else: | ||
| + | if e == a+b: | ||
| + | print("< | ||
| + | else: | ||
| + | print("< | ||
| + | elif ro == ' | ||
| + | print("< | ||
| + | for i in range(anz): | ||
| + | if form.getvalue(" | ||
| + | e = int(form.getvalue(" | ||
| + | else: | ||
| + | e = None | ||
| + | a = int(form.getvalue(" | ||
| + | b = int(form.getvalue(" | ||
| + | if e == None: | ||
| + | print("< | ||
| + | else: | ||
| + | if e == a-b: | ||
| + | print("< | ||
| + | else: | ||
| + | print("< | ||
| + | elif ro == ' | ||
| + | print("< | ||
| + | for i in range(anz): | ||
| + | if form.getvalue(" | ||
| + | e = int(form.getvalue(" | ||
| + | else: | ||
| + | e = None | ||
| + | a = int(form.getvalue(" | ||
| + | b = int(form.getvalue(" | ||
| + | if e == None: | ||
| + | print("< | ||
| + | else: | ||
| + | if e == a*b: | ||
| + | print("< | ||
| + | else: | ||
| + | print("< | ||
| + | elif ro == ' | ||
| + | print("< | ||
| + | for i in range(anz): | ||
| + | if form.getvalue(" | ||
| + | e = int(form.getvalue(" | ||
| + | else: | ||
| + | e = None | ||
| + | a = int(form.getvalue(" | ||
| + | b = int(form.getvalue(" | ||
| + | if e == None: | ||
| + | print("< | ||
| + | else: | ||
| + | if e == a//b: | ||
| + | print("< | ||
| + | else: | ||
| + | print("< | ||
| + | print("< | ||
| + | print("< | ||
| + | print("</ | ||
| + | |||
| + | else: | ||
| + | print("< | ||
| + | print("< | ||
| + | print(""" | ||
| + | < | ||
| + | < | ||
| + | <input type=" | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | <label for=" | ||
| + | </ | ||
| + | < | ||
| + | | ||
| + | < | ||
| + | <p> | ||
| + | <select name=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <p>In welchem Bereich sollen die Operanden liegen?</ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | </p> | ||
| + | """ | ||
| + | print("< | ||
| + | print("</ | ||
| + | |||
| + | |||
| + | print(footer) | ||
| + | </ | ||
| + | |||
| + | **Aufgabe3** | ||
| + | |||
| + | Teste das Script und versuche den Quelltext zu verstehen! Versuche ein ähnliches Programm mit anderen Aufgabeentypen zu schreiben. | ||
python/pythoncgi/cgiformulare.1692770909.txt.gz · Zuletzt geändert: von lutz
