Die Vergleiche mit ``== True`` sind unnütz, der Ausdruck davor liefert ja bereits einen Wahrheitswert.
Das ``if``-Konstrukt ist zudem so regelmässig und einfach, dass man das durch ein Wörterbuch ersetzen sollte das Name und Passwort auf den Pfadteil abbildet.
Namen schreibt man in Python klein_mit_unterstrichen. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase). Also `new_url` statt `newURL`.
Code: Alles auswählen
#!/usr/bin/python3
import cgi
import cgitb
cgitb.enable()
response = """Content-type: text/html; charset=utf-8
<html>
<head>
<title>Login..</title>
<meta http-equiv="refresh" content="2;URL={}">
</head>
<body>Login...</body>
</html>"""
credentials_to_path = {
("peter", "abc"): "mainpeter",
("fritz", "def"): "mainfritz",
}
form = cgi.FieldStorage()
path = credentials_to_path.get(
(form.getvalue("username"), form.getvalue("password")), "error_login"
)
print(response.format("users_lib/{}.html".format(path)))
Hat eigentlich schon mal jemand erwähnt, dass man heutzutage kein CGI mehr macht? Die Anbindung du jour heisst WSGI. Und es gibt da auch wirklich ganz kleine Rahmenwerke. Neben Flask beispielsweise auch Bottle. Das ist nur eine einzige Datei.