Bottle.py - Einleitung in das Web Frameworks

Mit dem Single-File Micro Web-Framework bottle.py, vom deutschen Entwickler Marcel Hellkamp, können Webseiten spielend leicht das Licht des Internets entdecken. Lediglich ein Python 2.7, respektive Python 3.4, unterstützender Webserver (oder Webspace) ist notwendig, weiterer Forderungen stellt uns diese Bibliothek nicht. Eine Installation benötigt das Paket ebenfalls nicht, ein reines "Drag & Drop" bzw. ein Download über pip oder wget reicht völlig aus.

Zum aktuellen Zeitpunkt kann dabei zwischen dem aktuellen stabilen Release 0.12 sowie der Entwicklerversion 0.13-dev gewählt werden. Diese Webseite hier nutzt letzteres und zeigt, dass die über 4.400 Zeilen lange Datei natürlich auch hervorragend für Blogs mit dynamischen Inhalten genutzt werden kann. Der dafür zuständige Router macht allerdings nur einen Teil des Pakets aus.

Funktionsumfang

Der Umfang des Micro Frameworks deckt nämlich sämtliche Grundfunktionen einer Webseite ab. Neben dem Router findet man so auch eine simple Template-Engine (inklusive Anbindungen zu bekannten externen Bibliotheken), entsprechende Klassen für Formulardaten, Handler für Dateien sowie Cookies und entsprechende Schnittstellen für Kopfzeilen und HTTP Metainformationen. Server-Technisch arbeitet bottle.py zudem mit insgesamt 17 verschiedenen Sockets. Gerade für reine Webspaces wird auch reines CGI, über das Apache Modul "MOD_WSGI", unterstützt. Auch asynchrone Server-Systeme finden sich in der Liste.

Router

Hauptmerkmal bleibt natürlich das URL Mapping System, welche über route entweder als Funktionsaufruf oder Funktionsdekorator genutzt werden kann. Die entsprechenden URL Mapping Angaben können dabei mit Filtern dynamisiert werden, bottle.py definiert dabei direkt die üblichen Kandidaten wie :int für Zahlen, :float für Fließkommazahlen, :path für sämtliche alphanumerischen Zeichen (inklusive einigen Sonderzeichen wie dem Slash) sowie :re:[:exp] für eigene reguläre Ausdrücke. Auch eigene Filter können definiert und fortlaufend über die Web-Anwendung genutzt werden.

SimpleTemplate

Um auch bei den Templates eine dynamische Umgebung zu gewähren, liefert bottle.py direkt eine Template Engine mit. Mit dieser können Variablen, welche zuvor definiert oder über die entsprechende Funktion an das Template durchgegeben wurden, direkt als "Inline Expressions" über {{ }} ausgegeben werden. Aber auch die Einbindung von direktem Python Code, auch mehrzeilig und unabhängig des Einzugs, ist mit dem mitgeliefertem System möglich. Einzeilig muss hier lediglich % vor dem Code gesetzt werden, mehrzeilig erinnert die Syntax mit <% und %> an die PHP ASP Tags.

Plugins

Das Framework kann natürlich auch über Plugins erweitert werden. Neben einer Anbindung an Beaker (einen Session-Manager) sowie verschiedenen relationalen Datenbanken findet man in der recht kurzen Liste allerdings auch eine Integration für memcache bzw. einen Adapter für die OAuth Bibliothek. Auch die JSON WebToken Technik findet so Ihren Weg zu bottle.py.

Fazit

Natürlich eignet sich bottle.py mehr für Tüftler und Programmierer, die lieber auf komplette Systeme wie Django CMS oder WordPress verzichten möchten. Diese finden in dem Micro-Framework dann allerdings den perfekten Begleiter und optimalen Start für jede Art von Projekten, Python Kenntnisse sind aber natürlich vorausgesetzt. Der Umgang geht relativ flüssig von der Hand, Schnittstellen und Anbindungen sind beinah alle intuitiv und gewohnt.

Mit diesem ersten Artikel zu dem Web-Framework wollte ich bottle.py lediglich erstmal kurz vorstellen. Zukünftig jedoch möchte ich mit weiteren Beiträgen genauer auf die einzelnen Funktionen und Bestandteile eingehen, untermauert mit Beispielen und Source Code wie sie auch hier zum Einsatz kommen. In dem kommenden Beitrag wird dabei nicht nur die grundlegende Nutzung, sondern auch direkt das Routing System thematisiert und veranschaulicht.