Bottle (Framework)

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Bottle

Basisdaten

Hauptentwickler Marcel Hellkamp
Aktuelle Version 0.12.25 (Juli 2023)
Aktuelle Vorabversion 0.13-dev
Betriebssystem plattformübergreifend
Programmiersprache Python
Kategorie Webframework
Lizenz MIT-Lizenz
bottlepy.org

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[Bearbeiten | Quelltext bearbeiten]

Die erste Version wurde nach Angaben des Entwicklers nach drei Tagen Entwicklungszeit am 1. Juli 2009 veröffentlicht und bestand aus 600 Zeilen Programmcode.[1] 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[2], nachdem das Release 0.12 am 19. Juli 2013 fertiggestellt wurde.[3] Seither werden Bugfixes vorgenommen; neue Funktionen kamen nicht mehr hinzu.

Verwendung[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Folgendes Beispiel[4], 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.

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

Vorteile[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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.[2] 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.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. First release after 3 days of coding. Abgerufen am 29. Juni 2023 (englisch).
  2. a b History for bottle.py. Archiviert vom Original am 29. Juni 2023; abgerufen am 29. Juni 2023 (englisch).
  3. https://blog.bottlepy.org/. Abgerufen am 29. Juni 2023.
  4. Bottle: Python Web Framework. Abgerufen am 29. Juni 2023.