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 07:23] – lutz | python:pythoncgi:cgiformulare [2024/05/24 07:48] (aktuell) – lutz | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
Zunächst erstellen wir in unserem Webserver-Verzeichnis die folgende HTML-Datei mit einem Formular: | Zunächst erstellen wir in unserem Webserver-Verzeichnis die folgende HTML-Datei mit einem Formular: | ||
- | <code html> | + | < |
< | < | ||
Zeile 27: | Zeile 27: | ||
</ | </ | ||
- | Neu ist, dass | + | Neu ist das Attribut '' |
+ | <code python script03_auswertung.py> | ||
+ | # | ||
+ | import cgi | ||
+ | header = ''' | ||
+ | < | ||
+ | |||
+ | <html lang=" | ||
+ | < | ||
+ | <meta charset=" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | < | ||
+ | ''' | ||
+ | |||
+ | footer = ''' | ||
+ | </ | ||
+ | </ | ||
+ | ''' | ||
+ | |||
+ | form = cgi.FieldStorage() | ||
+ | |||
+ | print(header) | ||
+ | if form.getvalue(" | ||
+ | name = form.getvalue(" | ||
+ | print("< | ||
+ | if form.getvalue(" | ||
+ | alter = int(form.getvalue(" | ||
+ | print("< | ||
+ | if form.getvalue(" | ||
+ | print("< | ||
+ | if form.getvalue(" | ||
+ | print("< | ||
+ | print(footer) | ||
+ | |||
+ | </ | ||
+ | |||
+ | 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.1692768213.txt.gz · Zuletzt geändert: 2023/08/23 07:23 von lutz