Zum Inhalt

Web-Frameworks

Dashboards werden als Smart Service von einem Webserver (Request) an den Client (Response) ausgeliefert. Dazu können unterschiedlichste Umgebungen bzw. Frameworks genutzt werden. Hier soll ein Überblick über die einige wenige (und möglichst einfach zu nutzende) Frameworks gegeben werden.

Micro-Frameworks

Micro-Frameworks stellen einige Basis-Funktionalitäten eines Webservers zur Verfügung:

  • Routing / Endpoints
  • HTTP-Serving

Bottle

Sehr einfaches Framework, das Template-Engines wie Mako, Jinja2 und Cheetah unterstützt.

Homepage

Minimal-Beispiel
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)

Flask

Das wohl am weitesten verbreitete Framework ist Flask. Die Entwicklung von Routing und Serving wird durch die Render-Template-Engine Jinja2 erheblich vereinfacht. Flask bietet folgende Funktionalitäten:

  • Routing / Endpoints
  • Templating
  • static / dynamic
  • blueprint
  • Redirect
  • Sessions
  • HTTP-Serving

Direkt zum Kapitel: Flask

Minimal-Beispiel
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

app.run(host='127.0.0.1', port=5000)

FastApi

FastApi ist ein sehr performantes Framework, das neben dem HTTP-Serving insbesondere die RestApi-Schnittstelle gemäß OpenApi anbietet. Es baut auf der Webserver-Lib Starlette auf und unterstützt neben dem HTTP auch Websockets.

Homepage

Minimal-Beispiel
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

if __name__ == "__main__":
    uvicorn.run(app, host="127.0.0.1", port=8008)        

Direkt zum Kapitel: FastApi

Full-Stack-Frameworks

Django

Mit Django steht das wohl mächtigste Framework zur Verfügung.

Reflex

basiert auf React, wird vollständig in Python programmiert.

Templates

Python-gestützte Fullframe-Frameworks

Die nächste Stufe stellt die vollständige Intergration der Webcontentgenerieung in das Python-Programm dar. Hier sind wiederum verschieden komplexe Frameworks zu finden.

Dash

Der Schwerpunkt von Plotly-Dash liegt in der grafischen Visualisierung mittels Linechart, realisiert durch das sehr etablierte Plotly.

Minimal-Beispiel
from dash import Dash, html, dcc, callback, Output, Input
import plotly.express as px
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder_unfiltered.csv')

app = Dash()

app.layout = [
    html.H1(children='Title of Dash App', style={'textAlign':'center'}),
    dcc.Dropdown(df.country.unique(), 'Canada', id='dropdown-selection'),
    dcc.Graph(id='graph-content')
]

@callback(
    Output('graph-content', 'figure'),
    Input('dropdown-selection', 'value')
)
def update_graph(value):
    dff = df[df.country==value]
    return px.line(dff, x='year', y='pop')

if __name__ == '__main__':
    app.run(debug=True)

Neben der Plotly-Komponente gibt es zahlreiche Erweiterungen, wie etwas dash-mantine-components, die die Möglichkeiten der Visualisierungselemente und von Dateneingabeelementen erhöhen.

TaiPy

Die Trennung von Datenbackend und einem Konzept der Datenanalyse-Szenarien und dem Frontend bietet TaiPy.

niceGUI

Das aus einem deutschen Forschungsvorhaben entstande niceGui ermöglicht eine besonders einfache Implementierung von Live-Daten- Zyklen. Diese zeichnet sich außerdem durch eine hervorragende Performance aus. Als grafische Widgets lassen sich unterschiedliche Bibliotheken verwenden: