Ich war ziemlich besorgt darüber, wie ich in meinem persönlichen Blog eine Tabelle erstellen und Tabellenfunktionen hinzufügen kann, die es mir ermöglichen, schnell auf bestimmte Daten zuzugreifen. Für den Fall, dass die Daten in den Tabellen zu groß sind, war das Hinzufügen einer Paginierung äußerst notwendig. Außerdem würde das möglichst effiziente Laden der Daten in die Tabelle dazu beitragen, die Arbeit mit meiner Blog-Anwendung zu verbessern.
Das Erstellen einer Tabelle in Flask ist sehr einfach. Sie müssen lediglich eine Tabellenstruktur definieren und alle Benutzer in der Tabelle anzeigen.
Die Basistabelle ist eine Tabelle, die alle Daten in der Datenbank anzeigt, genau wie die Bootstrap-Tabelle. Ich nenne es einfach in dem Sinne, dass es für die Anzeige kurzer Daten recht gut geeignet ist. Allerdings ist die Anzeige großer Datenmengen nicht sehr effizient.
Der größte Nachteil der Basistabelle, die lediglich alle Benutzerdaten in unserer Datenbank anzeigt, besteht darin, dass diese Tabelle beim Laden der Seite einige Sekunden lang die gesamte Tabelle anzeigt, bevor die Paginierung einsetzt. Für den Fall, dass die Daten ebenfalls angezeigt werden groß, ein Benutzer muss geduldig warten, während die Route „ihre Aufgabe erfüllt“, bevor der tatsächliche Abschlusstisch angezeigt wird.
Die Verwendung von Ajax hilft, das Problem der Basistabelle zu lösen. Hier wird die Tabelle zunächst leer geladen, wenn die Anfrage zum Zugriff auf die Ajax-Tabelle gestellt wird. Ein zweiter Endpunkt wird verwendet, um die Daten in der Tabelle anzuzeigen. Es gibt jedoch immer noch ein kleines Problem mit dieser Tabelle. Wenn die Daten zu groß sind, ist die Tabelle einige Sekunden lang leer, bevor die tatsächlichen Daten angezeigt werden. Dies liegt daran, dass zunächst die gesamte Tabelle geladen werden muss, was je nach Datengröße einige Zeit in Anspruch nehmen kann.
Bei der serverseitigen Tabelle werden alle Funktionen wie Paging, Suche und Sortierung serverseitig implementiert. Dies ist eine sehr effiziente Möglichkeit, große Datenmengen anzuzeigen. Wenn eine Anfrage für die paginierte serverseitige Tabelle gestellt wird, werden nur die auf der jeweiligen Seite gefundenen Daten angezeigt. Wenn ein Benutzer zu einer anderen Seite navigiert, erfolgt eine erneute Abfrage der Daten auf der nächsten Seite. Somit werden nur benötigte Daten geladen und angezeigt. Es ist eine bessere Lösung, aber die Umsetzung ist etwas aufwändiger. Funktionen wie Suchen und Sortieren müssen von der Clientseite auf die Serverseite verlagert werden.
HINWEIS: Wenn Sie die Anwendung auf dem Heroku-Server testen, wird möglicherweise ein „Unerwarteter Fehler“ angezeigt. Dies liegt daran, dass Heroku eine begrenzte Menge an Datenbankspeicher bereitstellt. Die Anwendung generiert derzeit automatisch Hunderte von Benutzern, deren Datenbank Heroku zum Zeitpunkt des Zugriffs auf die Anwendung möglicherweise deaktiviert hat, weil das Speicherlimit der kostenlosen Version überschritten wurde.
Wenn Sie die Anwendung testen möchten, können Sie die Anwendung mit den folgenden Befehlen ausführen:
Klonen Sie dieses Repository:
$ git clone [email protected]:GitauHarrison/beautiful-flask-tables.git
Wechseln Sie das Verzeichnis, um auf die Anwendung zuzugreifen:
$ cd beautiful-flask-tables
Erstellen und aktivieren Sie die virtuelle Umgebung:
$ mkvirtualenv flask-tables
Abhängigkeiten installieren:
$ pip3 install -r requirements.txt
Führen Sie die Anwendung aus:
$ flask run
Öffnen Sie die Anwendung in Ihrem Browser, die auf dem lokalen Port 5000 ausgeführt wird:
Die Verwendung von JQuery ist derzeit veraltet. Dadurch ist DataTables.js veraltet, da es auf JQuery basiert. Schauen Sie sich hier die aktualisierte Version dieses Projekts an, in der ich zeige, wie man mit Grid.js arbeitet.