Zum Inhalt
Überwachte maschinelle Übersetzung

Dieser Inhalt wurde maschinell übersetzt und basiert auf von Menschen kuratierten Glossaren und Styleguides. Da der Text nicht zeilenweise manuell überprüft wird, können gelegentlich Fehler oder unklare Formulierungen auftreten.

Bei etwaigen Abweichungen ist die ursprüngliche englische Version die maßgebliche Quelle.

Lesen Sie die ursprüngliche englische Version

Vergleich von starlette-admin, Django Admin und Flask-Admin

Django Admin, Flask-Admin und starlette-admin lösen dasselbe Problem: Sie generieren eine produktionsreife Admin-Oberfläche aus Ihren Datenmodellen, sodass Sie keine CRUD-Bildschirme von Hand schreiben müssen. Sie unterscheiden sich in den Web-Stacks, auf die sie abzielen, in den ORMs, die sie unterstützen, und darin, wie viel sie bereits mitbringen und was sie Ihnen überlassen.

Diese Seite vergleicht die drei Frameworks. Wenn Sie Django Admin oder Flask-Admin bereits kennen und eine direkte API-Übersetzung suchen, lesen Sie den passenden Migrationsleitfaden:

Positionierung auf einen Blick

Django Admin Flask-Admin starlette-admin
Web-Framework Nur Django Nur Flask Starlette, FastAPI und jede ASGI-Anwendung, die Sub-Applikationen einbinden kann
Ausführungsmodell Synchron (WSGI-first) Synchron (WSGI) Async-first (ASGI)
Datenschicht Nur Django ORM SQLAlchemy, MongoEngine, peewee, pymongo SQLAlchemy, SQLModel, MongoEngine, Beanie, Tortoise ORM oder ein eigenes Backend
UI-Toolkit Django-Templates, klassisches Admin-Theme Bootstrap 2/3/4 Tabler (Bootstrap 5), Dark Mode, eigene Themes
Im Framework enthalten Ja, Teil von Django Nein, separates Paket Nein, separates Paket
Authentifizierung Integriert über django.contrib.auth Bringen Sie Ihre eigene mit (is_accessible) Austauschbares AuthProvider / OAuthProvider, bringen Sie Ihren eigenen User-Store mit

Wann welches Framework passt

Django Admin

Django Admin passt zu nativen Django-Anwendungen. Es ist ausgereift und integriert sich in django.contrib.auth, sodass Sie Benutzer, Gruppen, Berechtigungen pro Modell und Änderungshistorie ohne Konfiguration erhalten. Es läuft ausschließlich innerhalb von Django.

Flask-Admin

Flask-Admin hat die automatische Generierung nach Flask gebracht und den ModelView-Konfigurationsstil populär gemacht. Es ist synchron und an Flask gebunden und läuft daher nicht auf einem async-Stack.

starlette-admin

starlette-admin zielt auf den asynchronen Python-Stack ab. Wenn Ihre Anwendung FastAPI oder Starlette verwendet, binden Sie das Admin-Interface in Ihre Anwendung ein, und es läuft auf demselben Event Loop. Es funktioniert mit SQL- und NoSQL-Datenschichten, übernimmt den ModelView-Konfigurationsstil von Flask-Admin und deckt den Funktionsumfang ab, den Django-Admin-Nutzer erwarten: Inlines, Batch-Aktionen, Berechtigungen pro Request und Internationalisierung.

Feature-Matrix

Legende:

  • Ja: Eingebaut
  • Teilweise: Über Drittanbieter-Pakete oder eigenen Code möglich
  • Nein: Nicht verfügbar
Feature Django Admin Flask-Admin starlette-admin
Automatisch generierte CRUD-Views Ja Ja Ja
Volltextsuche Ja search_fields Ja column_searchable_list Ja searchable_fields
Spaltenfilter Ja list_filter Ja column_filters Ja Visueller Filter-Builder mit AND/OR-Gruppen
Sortierung und Standardsortierung Ja Ja Ja sortable_fields, fields_default_sort
Inline-Bearbeitung in der Listenansicht Ja list_editable Ja column_editable_list Ja inline_editable_fields
Inline-Formulare für verknüpfte Modelle Ja TabularInline / StackedInline Ja inline_models Ja InlineModelView
Batch-Aktionen Ja actions Ja @action Ja @action mit Bestätigungsdialogen und eigenen Formularen
Aktionen pro Zeile Teilweise eigene Templates Teilweise eigene Formatter Ja @row_action, @link_row_action
Datenexport Teilweise django-import-export Ja CSV und weitere Ja CSV, JSON, Excel, PDF
Datenimport Teilweise django-import-export Nein Ja CSV, JSON, Excel mit Vorschau-Validierung und Upsert
Datei- und Bild-Uploads Ja FileField / ImageField Teilweise zusätzlicher Aufwand nötig Ja Lokaler Speicher und S3
Dashboard-Widgets Teilweise Themes von Drittanbietern Teilweise eigene Index-View Ja Integriertes Widget-System
Eigene eigenständige Seiten Ja eigene AdminSite-URLs Ja BaseView + @expose Ja CustomView
Kontrolle über das Formularlayout Ja fieldsets Ja form_rules Ja form_layout mit Tabs und Grids
Authentifizierung Ja django.contrib.auth Nein bringen Sie Ihre eigene mit Ja AuthProvider oder OAuthProvider
Berechtigungen pro Modell Ja Permission-Framework Ja Überschreiben der can_*-Flags Ja Methoden pro Request
Berechtigungen pro Feld Teilweise get_readonly_fields Nein Ja can_access_field
Lifecycle-Hooks Ja save_model, Signals Ja on_model_change Ja Lifecycle-Hooks und Events
CSRF-Schutz Ja Django-Middleware Ja über Flask-WTF Ja In Admin integriert
Änderungshistorie / Audit-Log Ja LogEntry Nein Teilweise bauen Sie selbst mit Events
Internationalisierung Ja Ja über Flask-Babel Ja I18nConfig
Mehrere Admin-Instanzen Ja mehrere AdminSites Ja Ja Mehrere Admin-Mounts
Unterstützung für async-ORMs Teilweise Nein Ja async SQLAlchemy, Beanie, Tortoise ORM

Kompromisse

  • Komplettes Benutzersystem: Django Admin liefert ein vollständiges Benutzersystem mit. django.contrib.auth übernimmt Benutzer, Gruppen, Berechtigungen und Passwortverwaltung für Sie. In starlette-admin implementieren Sie authenticate() gegen Ihren eigenen Datenspeicher – das bedeutet mehr Einrichtungsaufwand am Anfang, dafür mehr architektonische Freiheit später.
  • Automatisierte Änderungshistorie: Django Admin zeichnet die Änderungshistorie in LogEntry auf. In starlette-admin bauen Sie den Audit-Trail selbst, indem Sie Lifecycle-Events abonnieren. Das erfordert nur wenige Zeilen Code, ist aber nicht automatisch.
  • Ökosystem von Drittanbietern: Django Admin verfügt über ein großes Ökosystem an Drittanbieter-Paketen für Themes, Widgets und Datenworkflows. starlette-admin deckt viele dieser Funktionen nativ ab, aber eine Nischen-Erweiterung, von der Sie abhängen, existiert möglicherweise noch nicht.
  • Dateiverwaltung: Flask-Admin liefert FileAdmin mit, einen Browser für das Server-Dateisystem. starlette-admin verwaltet Dateien, die an Modelfelder gebunden sind, über lokale Festplatte oder S3 und bietet keinen universellen Datei-Browser für den Server.

Nächste Schritte