Bottle
# Bottle

Bottle ist ein in Python geschriebenes, schnelles und leichtgewichtiges Micro-Webframework zur Erstellung von Webanwendungen. Es zeichnet sich im Gegensatz zu anderen Frameworks dadurch aus, dass es aus einer einzelnen Datei besteht, die allen Programmcode zum Routing, Templating sowie einen HTTP-Entwicklungsserver enthält. Die Installation von Fremdsoftware ist daher nicht nötig. Neben der eingebauten Templating-Engine und dem Entwicklungsserver unterstützt Bottle verschiedene weitere Webserver (u. a. Google App Engine sowie jeden WSGI-kompatiblen Webserver) und Template-Engines (u. a. Jinja2).

## Geschichte

Die erste Version wurde nach Angaben des Entwicklers nach drei Tagen Entwicklungszeit am 1. Juli 2009 veröffentlicht und bestand aus 600 Zeilen Programmcode. Mit Stand März 2023 enthält das Framework 3809 Zeilen Code in der als stable gekennzeichneten Version 0.12.25, die am 4. März 2023 geringfügig verändert wurde, nachdem das Release 0.12 am 19. Juli 2013 fertiggestellt wurde. Seither werden Bugfixes vorgenommen; neue Funktionen kamen nicht mehr hinzu.

## Verwendung

Bottle kann über die Paketverwaltung pip installiert oder als Einzeldatei heruntergeladen werden. Das Framework wird meist für kleine Webdienste bzw. Webanwendungen genutzt, die schnell erstellt werden sollen.
Ähnlich wie Flask stellt Bottle keine eigene Lösung für Anwendungsfälle bereit, für die es bereits etablierte Installationspakete gibt. So können über diese u. a. Datenbanken, Sessionhandling und Authentifizierung eingebunden werden.

### Beispiel

Folgendes Beispiel, das in einer gesonderten Datei abzuspeichern ist, bindet das Framework ein und startet den integrierten Webserver unter Localhost auf dem Port 8080. Der Aufruf der beispielhaften URL http://localhost:8080/hello/Bob gibt dann die Zeichenkette „Hello Bob!“ in Fettschrift zurück.

### Vorteile

Die Vorteile von Bottle sind die oben bereits geschilderten Eigenschaften, aus nur einer Datei zu bestehen und neben den mit Python mitgelieferten Standard-Bibliotheken keine weiteren zu benötigen. Nicht zuletzt dadurch ist es ein schnelles, leichtgewichtiges Framework, mit dem (kleine) Dienste oder Prototypen schnell programmiert werden können. Es kann leicht durch die Einbindung weiterer Bibliotheken erweitert werden.

### Nachteile

Da Bottle nur wenig fortentwickelt wird und keine große Entwicklergemeinschaft hinter dem Projekt steht, ist es mitunter problematisch, Support zu erhalten. Auch neue Funktionen oder Optimierungen sind i. d. R. nicht bzw. nicht zeitnah zu erwarten: 77 offene Pull Requests und 243 offene Probleme bzw. Diskussionsbedarfe (Issues) im GitHub-Repositorium bestätigen dies. Da keine Entwurfsmuster zum Einsatz kommen – wie das oft genutzte MVC-Muster in größeren Frameworks wie z. B. Django – gestaltet sich die Code-Aufteilung bei größeren Projekten als Herausforderung, da sie eigenverantwortlich vorgenommen werden muss. Andernfalls wird der Code schnell unübersichtlich und schwer wartbar.