Webframeworks_Grundlagen¶
ehemalige Veranstaltungen ia3.netz + ia3.data sowie ia4.Netz im Studiengang Interaktive Medien
(c) 2020/2021 Hochschule Augsburg - Fakultät für Informatik - Prof.Dr.Nik Klever
Web-Frameworks Grundlagen¶
Framework¶
Rahmenwerk bzw. Gerüst für Software-Anwendungen
- Application Framework
- Test Framework
- Web Framework
Dabei kann ein Framework oftmals mehrere andere enthalten und eine Definition ist meist nicht einfach.
Web - Grundlegende Eigenschaften¶
Basis des Webs¶
- HTTP als Protokoll
- Request
- Response
- HTML, CSS als Format
- Format für die Darstellung und die Interaktion mit dem Webserver
HTML-Formulare¶
Formulare erlauben dem User bestimmte Felder zu füllen und dem Server zurückzuschicken. Diese Felder werden über die CGI-Schnittstelle vom Webserver bei der Methode GET über die Umgebungsvariable und bei der Methode POST über STDIN übergeben.
form-Tag¶
<form [action=url enctype=encoding method=method]> ... </form>
input-Tag¶
<input type=checkbox [name=name checked value=string]>
<input type=file [name=name maxlength=n size=n]>
<input type=hidden [name=name value=string]>
<input type=image [name=name align=type border=n src=url]>
<input type=password [name=name maxlength=n size=n value=string]>
<input type=radio [name=name checked value=string]>
<input type=reset [value=string]>
<input type=submit [name=name value=string]>
<input type=text [name=name maxlength=n size=n value=string]>
select-, option-, textarea-Tag¶
<select [name=name multiple size=n]> ... </select>
<option [selected value=string]> ... </option>
<textarea [name=name cols=n rows=n]> ... </textarea>

<html>
<head>
<title>PTF Bestellformular</title>
</head>
<body>
<h1>PTF Bestellformular</h1>
<form ACTION="http://python.website.example/cgi-bin/form.py" method="GET">
<h3>Kunde</h3>
<p>Name <input name="Kunde" size="46"/></p>
<p>Strasse <input name="Strasse" size="40"/></p>
<p>Ort <input name="Ort" size="20"> Plz <input name="Plz" size="4"></p>
<h3>Kreditkarte</h3>
<p>Mastercard
<input name="Kreditkarte" type="radio" value="Mastercard"/>
Visacard
<input name="Kreditkarte" type="radio" value="Visacard"/>
</p>
<p>Nummer
<input name="Kreditkartennummer" size="10"/>
Ablaufdatum
<input name="Ablaufdatum" size="4"/>
</p>
<h3>PTF Bestellgröße</h3>
<p>Groß
<input name="Groesse" type="radio" value="gross"/>
Mittel
<input name="Groesse" type="radio" value="mittel"/>
Klein
<input name="Groesse" type="radio" value="klein"/>
</p>
<h3>Zustellung</h3>
<p>Expresszustellung <input name="Express" type="checkbox"/></p>
<p><input type="submit" value="Bestellung abschicken"/></p>
</form>
<p>Vielen Dank für ihre Bestellung!</p>
</body>
</html>
Umgebungsvariablen¶
Wenn der Webserver ein CGI-Skript aufruft, setzt er einige Umgebungsvariablen. Diese Umgebungsvariablen werden an das CGI-Skript vererbt und können somit angesprochen und wie Parameter verarbeitet werden. Die Antwort auf eine entsprechende CGI-Anfrage muss dann das CGI-Skript selbst zusammenstellen und als HTTP-Response über den Webserver an den Client ausgeben.
WSGI - Web Server Gateway Interface¶
Das Python Web Server Gateway Interface (WSGI) ist eine Schnittstellen-Spezifikation, die eine Schnittstelle zwischen Webservern und Web Application Frameworks bzw. Web Application Servern festlegt, um die Portabilität von Webanwendungen auf unterschiedlichen Webservern zu fördern. Diese einheitliche Schnittstelle soll als Middleware die Portabilität fördern und somit mit der Auswahl eines Frameworks nicht die Auswahl des Webservers einschränken und umgekehrt. Mit der WSGI Schnittstelle wird somit eine Trennung des Webservers und der dahinterliegenden Webanwendung erreicht.
Zusammenfassung Interaktion im Web¶
- Request Objekt
- Response Objekt
- Session Objekt
- CGI / WSGI Anbindung
- Formular Objekt
MVC¶
Model - View - Controller¶
- Model für die grundlegende Datenhaltung
- Datenbankanbindung
- View für die Ansicht im Browser
- HTML Templates
- Controller
- Steuerung der Anwendung
Architektur¶
Strukturierung der Software-Architektur nicht nur aber insbesondere in Webanwendungen um die Trennung zwischen der Datenhaltung (dem Datenmodell und der Speicherung aller Daten in einer Datenbank), dem Prozessverlauf (der Steuerung und der eigentlichen Verarbeitung der Daten sowie der Auslieferung als "fertige" Webseite) und der Ansicht (der Darstellung der Eingaben und der Ergebnisse als Webseite) durchzuführen.
In einfachen Webanwendungen ist
- die Datenbank in der Regel eine SQL-Datenbank (SQLite, MySQL, PostgreSQL, ...),
- die Steuerung wird durch ein entsprechendes Python-Skript ermöglicht und
- die Ansicht wird durch ein HTML- und CSS-Template dargestellt.
Weitere Tools eines Frameworks¶
- Benutzerverwaltung
- Logging
- SQL Adapter
- ...
Übersicht Python Webframeworks¶
Auf der sehr umfassenden Seite des Python Wiki's über Webprogramming ist auch eine
Übersicht über Python Web-Frameworks
enthalten.
Full Stack Python¶
Auf der Full Stack Python Seite von Matt Makai ist ebenfalls ein umfangreiches Kapitel über Webframeworks.
Flask-Security und Flask-Social¶
Flask-Security und Flask-Social sind leider zwei nicht mehr aktuell gepflegte Zusammenfassungen einiger - für eine vernünftige Anwendung - notwendiger Flask-Extensions.
Web2py¶
web2py ist das für Webanwendungen kompletteste und vollständigste Framework. Allerdings hat es den Haken, dass es nur eine vernünftige Informationsquelle gibt, nämlich die englische Originaldokumentation mit Videos und dem sehr gut durchsuchbarem Online-Buch. Aus diesem Buch ist insbesondere das 3. Kapitel Overview absolut empfehlenswert, dieses komplett durchzuarbeiten bevor sie mit web2py beginnen.