Obwohl Linux als freie Software kostenlos verfügbar ist, setzen viele beim Unternehmenseinsatz auf Enterprise-Distributionen mit Support. Wo die Stärken der ... (mehr)

Views

Meine Anwendung besteht aus einer Steuerungsdatei ( Listing 2 ) und 2 View-Dateien, die als Templates definiert sind ( Listing 3 und 4 ). Bottle erwartet die View-Dateien dabei im Ordner »views« unterhalb der eigentlichen Anwendung. In der Datei »survey.py« erzeugt der Aufruf in Zeile 6 ein »connection« -Objekt zur Kommunikation mit dem MongoDB-Service auf dem gleichen System, auf dem auch das Webframework läuft.

Listing 2

survey.py

 

Listing 3

views/main.tpl

 

In den Zeilen 7-8 wird dann ein Handler für die Datenbank und die gewünschte Collection definiert. In Zeile 10 und Zeile 14 wird jeweils eine Route, sprich, eine URL mit dem dazugehörigen Code definiert. Die Einsprungsseite ( »/« ) gibt lediglich ein Template zurück, das dem Benutzer eine einfach Umfrageseite präsentiert ( »main.tpl« ). Die daraus resultierende Post-Anweisung wird über die zweite URL ( »/survey« ) verarbeitet. Hier wird das Ergebnis der Umfrage in einem Dokument mit einem einzigen Feld ( »club« ) in der Datenbank gespeichert, und der Benutzer bekommt einer Ausgabe, welchen Verein er denn als seinen Lieblingsverein angegeben hat, und wie oft dieser schon von anderen Benutzern angegeben wurde.

Das zweite Template bekommt dabei eine Variable »club« und »results« übergeben (Zeile 25). »club« wird dabei der Inhalt des Eingabebox aus dem ersten Template und enthält den angegeben Lieblingsverein. »results« ist das Ergebnis einer Suche in der Datenbank, wie oft dieser Verein dort schon aufgeführt ist. Beide Variable werden dann in dem View-Template ( Listing 4 ) in Zeile 9 und Zeile 10 verwendet. Die Anwendung sieht im Webbrowser dann so aus wie in Abbildung 1 und Abbildung 2 dargestellt.

Abbildung 1: Über ein einfaches HTML-Eingabeformular soll der Benutzer seinen Lieblingsverein angeben.

Listing 4

views/result.tpl

 

Abbildung 2: Die Auswahl bekommt der Benutzer dann auf einer neuen Seite angezeigt, zusammen mit der Information, wie oft der Verein bereits von anderen Benutzern angegeben wurde.

Zusammenspiel

Das Beispiel zeigt, wie simpel es ist, mit der Kombination aus Python, MongoDB, Bottle und Pymongo eine Webanwendung zu entwickeln. Das Beispiel ist natürlich bewusst einfach gehalten, aber zeigt, wie die einzelnen Komponenten zusammenarbeiten. Das Beispiel geht auch davon aus, dass MongoDB nur auf einem einzelnen Server läuft, und dass der in Bottle eingebaute Webserver zum Einsatz kommt. In produktiven Umgebungen sollte dies natürlich anders sein, aber für Entwicklungsarbeiten eignet sich das hier vorgestellte Setup sehr gut.

Mittlerweile bin ich dazu übergegangen, Test-Anwendungen als PaaS-Apps in Openshift laufen zu lassen. Hier verweise ich auf einen anderen Artikel von mir zu der Thematik [1] . Mittlerweile kennt Openshift auch eine Cartridge, mit der sich MongoDB als Erweiterung installieren lässt.

Wer sich nun näher mit dem Thema auseinandersetzen möchte, findet unter [2] jede Menge hilfreiche Dokumentation. Dort gibts auch genaue Beschreibung, wie eine Installation von MongoDB unter Openshift funktioniert.

Infos

  1. Thorsten Scherf, Auf Knopfdruck, ADMIN05/2011, http://www.admin-magazin.de/Das-Heft/2011/05/Tagebuch-eines-IT-Nomaden/
  2. MongoDB: http://mongodb.org

Der Autor

Thorsten Scherf arbeitet als Senior Consultant für Red Hat EMEA. Er ist oft als Vortragender auf Konferenzen anzutreffen. Wenn neben Arbeit und Familie noch Zeit bleibt, nimmt er gerne an Marathonläufen teil.

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

MongoDB 2.0 schneller und mit Journaling

In Version 2.0 haben die MongoDB-Entwickler die NoSQL-Datenbank beschleunigt und eine Reihe neuer Features integriert.

Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023