So konfigurieren Sie das Django-Admin-Interface mit Bootstrap neu

Die Django-Verwaltungsseite ist großartig — voll funktionsfähig, einfach zu bedienen, sicher von Grund auf, zuverlässig … und etwas hässlich, was bei der Integration in das Erscheinungsbild der übrigen Website ein Nachteil sein kann. Lassen Sie uns das klären.

Wenn es nicht kaputt ist …

The default Django admin. (Source)

Angenommen, Sie haben gerade eine Web-App mit Django und Vue.js prototyped. Für eine Vielzahl von Fällen ist es in Ordnung, Django’s Admin für Backoffice-Zwecke zu verwenden, wie er ist, und ihn sogar nach angemessener Einstellung von Berechtigungen an Ihren Kunden weiterzugeben. Schließlich funktioniert es einwandfrei und es kann mit den integrierten Werkzeugen stark angepasst werden, um viele Situationen abzudecken.

Also noch einmal, warum sich die Mühe zu geben?

Gründe, das Erscheinungsbild des Admins zu hacken

Es gibt jedoch eine Reihe von berechtigten Gründen, um die Integration einen Schritt weiter zu gehen:

  • Markenauftritt: Es ist in Ordnung, wenn man den Namen und die Farben des Unternehmens anstelle von „Django-Verwaltung“ möchte (und zur Information, dies ist im Einklang mit Django’s BSD-Lizenz).
  • Nahtlose Integration zwischen Hauptseite und Admin: Sie möchten möglicherweise zwischen Backoffice-Funktionalitäten wechseln können, während Sie die Website navigieren, und umgekehrt, indem Sie eine gemeinsame Navigationsleiste verwenden.
  • Verschönerung: Während das Admin-Interface okay aussieht und sogar seit Version 2 responsive Webdesign-Prinzipien umsetzt (es funktioniert sowohl auf Mobilgeräten als auch auf Desktop gut), kann eine gut gestaltete Stylesheet viel tun, um es besser aussehen zu lassen.
  • Umgehungsfunktionalität: Sie möchten möglicherweise auch benutzerdefinierte Dropdown-Menüs für den Admin erstellen, die die Optionen anzeigen, die Sie tatsächlich verwenden, und aus dem Benutzerinterface verbergen, was Sie nicht wirklich benötigen, was für eine bessere Benutzererfahrung sorgen könnte.

A Practical Example

Für dieses Beispiel und um uns nicht zu wiederholen, setzen wir die einfache Publishing-Webanwendung fort, die wir für das Prototyping einer Web-App mit Django und Vue.js Artikel begonnen haben.

Kurz gesagt:

  • a Django app with two models:
  • Artikel mit Feldern name author (verknüpft), content und slug
  • Autor: mit Feldern name und slug
  • A single view called frontend that queries all registries in both models.
  • A single template called template.
  • Implementierung von Vue.js mit Vue Router und Vuex für eine reaktive, skalierbare Benutzeroberfläche.

Wir werden uns in dieser Ausgabe nicht besonders um die Integration von Vue.js kümmern und werden sie hier auch nicht verändern.

Das Grundgerüst

Source

Django-Vorlagen sind sehr vielseitig und leistungsfähig und können entweder auf App-Ebene (ein Bestandteil der Django-Site) oder auf der Seitenebene erstellt werden und können sogar die mit Django gelieferten Vorlagen überschreiben (was wir hier tun werden).

Source

Wir haben eine Grundvorlage erstellt, die auf Bootstrap‘s JavaScript und Stylesheet verweist, sowie auf seine Begleitwerkzeuge, jQuery und Popper.

Hier ist die Basisvorlage, die wir für die Hauptseite verwenden, überhaupt nicht anders als was wir für jede andere Django-Seite normalerweise verwenden würden:

<!doctype html>
<html lang="en">
  <head>
    <!-- Erforderliche Meta-Tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

    <title>Django and Vue.js</title>
  </head>
  <body class="bg-light">
    <div class="bg-white container">
      <h1>Prototyping a Web App with Django and Vue.js</h1>

      <!-- Inhalt -->
    </div>

    <!-- Vue.js -->
    <script src="https://unpkg.com/vue"></script>
    <script src="https://unpkg.com/vue-router"></script>

    <!-- Zuerst jQuery, dann Popper.js, dann Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
  </body>
</html>

Als nächstes werden wir dies in das Admin-System integrieren und eine gemeinsame Navigationsleiste sowohl für die Hauptseite als auch für das Backoffice hinzufügen!

Integration des Haupt-UI-Templates mit dem Admin

Wie bereits erwähnt, können wir Vorlagen überschreiben, einschließlich jener des Admins. Aufgrund der Architektur von Django und nicht überraschenderweise sind die Hauptseite und das Backoffice zwei verschiedene Systeme, jeweils mit eigenen Vorlagen, Stylesheets und contrib-Paketen. Daher müssen, selbst wenn sie fast identisch sind, zwei verschiedene Vorlagen gepflegt werden — eine für die Haupt-UI und eine für den Admin.

Aktivierung eines Verzeichnisses für Vorlagen im Allgemeinen

Zuerst müssen wir Django mitteilen, wo wir die gehackte Admin-Vorlage im Basisverzeichnis speichern werden.

Daher müssen wir myproject/settings.py bearbeiten. Zuerst finden Sie die Konstante TEMPLATES und den Schlüssel DIRS:

'DIRS': [],

Ändern Sie den Code wie folgt:

'DIRS': [os.path.join(BASE_DIR, 'templates')],

Um das Admin-Template zu verpacken (admin/base Hack)

Wenn wir nur kosmetische Änderungen vornehmen möchten, wie beispielsweise ein benutzerdefiniertes Stylesheet an das Admin weiterzugeben oder dessen Header zu entfernen/ersetzen, könnten wir das erreichen, indem wir das admin/base_site Template bearbeiten und diesen aktuellen Schritt ganz überspringen. Sollte jedoch der Wunsch bestehen, den Admin-Bereich vollständig zu „verpacken„, als ob er Teil unserer Hauptseite wäre, mit der Möglichkeit, einen gemeinsamen Header und Footer zu haben, dann lest weiter.

Wir müssen Djangos admin/base.html in unserem Templates-Verzeichnis in templates/admin/base.html kopieren, um unsere Wrapper zu platzieren.

Wir werden den Code um den container-Abschnitt bearbeiten, sodass er von diesem:

<!-- Container -->
<div id="container">
(...)
</div>
<!-- END Container -->

in diesen umgewandelt wird:

{% block bodyheader %}{% endblock %}

<!-- Container -->
<div id="container">
(...)
</div>
<!-- END Container -->

{% block bodyfooter %}{% endblock %}

Und das war’s auch schon! Wir haben einfach bodyheader und bodyfooter Block-Tags erstellt, damit wir den Code injizieren können, der den Admin im nächsten Schritt umgibt.

Codierung eines benutzerdefinierten Admin-Templates (admin/base_site Hack)

Dann werden wir die tatsächliche Vorlage in `templates/admin/base_site.html` codieren (wir müssen die Verzeichnisse im Stamm unseres Projekts erstellen):

{% extends "admin/base_site.html" %}

{% block title %}Django with Bootstrap | Admin site{% endblock %}

{% block branding %}{% endblock %}
{% block breadcrumbs %}{% endblock %}

{% block bodyclass %}bg-light{% endblock %}

{% block extrastyle %}
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <style>
      #header, .breadcrumbs { display: none; }

      /* Bootstrap-Probleme mit dem Admin */
      * { box-sizing: unset; }
      div.module caption { caption-side: top !important; }
      .collapse { display: block !important; }
    </style>
{% endblock %}

{% block bodyheader %}
    <div class="bg-white container">

      <div class="jumbotron">
        <h1 class="display-4">Hacking the Django Admin with Bootstrap</h1>
        <p class="lead">
          The <a ref="https://docs.djangoproject.com/en/dev/ref/contrib/admin/">Django administration site</a> is great—full-featured, easy to use, secure by design, rock solid… and somewhat ugly, which can be something of a downside when you want to integrate it with the look-and-feel of the rest of the website. Let’s sort that out.
        </p>
      </div>
{% endblock %}

{% block bodyfooter %}
    </div>

    <!-- Zuerst jQuery, dann Popper.js, dann Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
{% endblock %}

Aufschlüsselung

Lassen Sie uns versuchen, zu erklären, was wir hier tun:

  1. Wir sagen dem Vorlagengenerator, dass wir die `admin/base_site.html`-Vorlage „erweitern“, um einige ihrer Definitionen effektiv zu überschreiben.
  2. Wir nutzen den `title`-Block, um einen Titel für die besuchte Admin-Seite anzupassen.
  3. Wir leeren den Inhalt der `branding`- und `breadcrumbs`-Blöcke, da wir sie nicht wirklich benötigen.
  4. Wir verwenden den `bodyclass`-Block, um Bootstraps `bg-light` festzulegen, wie wir es auch in der `frontend`-Vorlage getan haben.
  5. Wir verwenden den `extrastyle`-Block, um Bootstrap und einige CSS-Code einzubetten.
    a. Okay, `#header, .breadcrumbs { display: none; }` ist eine Art Wiederholung von Punkt 3; aber es ist nützlich zu wissen, dass man die Branding- und Breadcrumbs-Abschnitte auf zwei Arten deaktivieren kann.
    b. Bei der Überlappung von Bootstrap mit Django’s CSS im Admin können einige Probleme auftreten, also sind dies einige Korrekturen.
  6. Verwenden Sie die `bodyheader`- und `bodyfooter`-Blöcke, um den Admin-Inhalt einzubetten.

Nun, da wir Zugriff auf die Admin-Vorlage haben, könnten wir ihre Stylesheet weiter entwickeln oder einfach bei einem gemeinsamen Stil mit der Haupt-UI belassen.

Einschränkungen

Wir pflegen zwei verschiedene Vorlagen (Haupt-UI und Admin), um im Wesentlichen die gleiche Präsentation durchzuführen. Zugegeben, dies ist nicht ideal, da wir explizit eine der Maximen der Softwareentwicklung brechen: wiederhole dich nicht (DRY).

Wie wir erwähnt haben, liegt dies daran, dass der Django-Admin so konzipiert wurde, dass er vom Haupt-UI getrennt ist. Und das ist nicht falsch, genau wie es nichts falsch macht, aus dem Boxen zu denken. Aber ja, das zwingt uns dazu, zwei Vorlagen mit nahezu gleichem Inhalt zu verwenden.

Tatsächlich könnten wir prinzipiell ein Vorlagenmuster entwerfen, das die Navigationsleiste und andere gemeinsame Elemente aus dem Haupt-UI und dem Admin enthält und sie aus dieser einzigen Quelle wiederverwendet; aber an diesem Punkt und für den Zweck dieses Artikels wäre dieser Ansatz ein bisschen übertrieben. Trotzdem werde ich die Idee für dich angepflanzt lassen. 😉

Eine gemeinsame Navigationsleiste erstellen

Nun, da das Haupt-UI und die Admin-Site fast gleich aussehen, können wir in unserer Integration weiter gehen und eine gemeinsame Navigationserfahrung schaffen … und sogar weiter gehen, einige Admin-Optionen direkt im Hauptmenü präsentieren!

Hier ist der Ausschnitt für die Navigationsleiste:

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <ul class="navbar-nav mr-auto">
    <li class="nav-item">
      <a
        class="nav-link text-primary"
        href="/author/"
      >
        Go to Authors
      </a>
    </li>
    <li class="nav-item">
      <a
        class="nav-link text-primary"
        href="/article/"
      >
        Go to Articles
      </a>
    </li>
    {% if user.is_authenticated %}
    <li class="nav-item dropdown">
      <a
        aria-expanded="false"
        aria-haspopup="true"
        class="font-weight-bold nav-link text-primary dropdown-toggle"
        data-toggle="dropdown"
        href="#"
        role="button"
      >
        Admin
      </a>
      <div class="dropdown-menu">
        <a class="dropdown-item" href="/admin/myapp/author/">
          Manage authors
        </a>
        <a class="dropdown-item" href="/admin/myapp/article/">
          Manage articles
        </a>
      </div>
    </li>
    {% endif %}
  </ul>
</nav>

Beachte den dropdown-menu Abschnitt, der dafür sorgt, dass ein Admin-Menü angezeigt wird (siehe Bootstraps Navbar Komponente für mehr Informationen).

Wir führen auch eine bedingte Überprüfung mit {% if user.is_authenticated %} /{% endif %} durch, um zu entscheiden, ob wir das Admin-Menü anzeigen oder nicht.

Schließlich sollte man daran denken, dass wir nun zwei verschiedene Haupt-Templates pflegen, und deshalb den HTML-Code des Navigationsbereichs in beiden hinzufügen müssen, myapp/templates/myapp/template.html und templates/admin/base_site.html.

Zusatz: Die Admin-Login-Seite

Die Admin-Site wurde erledigt, aber es gibt noch eine lose Endung: die Login-Seite.

Nun könnten wir so etwas in etwas ähnliches verwandeln:

Source

… in etwas wie dieses:

Wir können etwas, das näher daran ist, erreichen, indem wir folgendes Template in templates/admin/login.html erstellen:

{% extends "admin/login.html" %}

{% load i18n static %}

{% block extrastyle %}
{{ block.super }}
<style>
#header {
  background-color: transparent !important;
}
</style>
{% endblock %}

{% block branding %}
<h1>
  <span style="color: #57C5A5 !important">ActionPlanNow.com</span>
  <br />
  <small>{% block head_title %}{% endblock %}</small>
</h1>
{% endblock %}

{% block content_title %}
<p class="lead" style="font-size: larger">
A Simple Tool for Leaders, Coaches, and Counselors.
</p>
{% endblock %}

Aufschlüsselung

Was wir hier tun:

  1. Das {{ block.super }} Tag gibt dem Template-Engine an, dass wir den Inhalt von extrastyle (den wir im templates/admin/base_site.html Template definiert haben) nicht überschreiben, sondern lediglich Inhalte anhängen (siehe Template-Erbschaft für weitere Informationen).
  2. Der branding Block ermöglicht es uns, die “Django-Verwaltung” Überschrift in etwas Interessanteres zu verwandeln.
  3. Wir beseitigen den head_title Block, indem wir eine leere Definition setzen.
  4. Wir verwenden den content_title Block, um zusätzliche Informationen hinzuzufügen.

Einige Überlegungen

Source

Genau wie Bootstrap enthält die Django-Admin-Site auch ihr eigenes Bundle von jQuery, aber zum Glück haben die Django-Entwickler darüber nachgedacht und Konflikte mit vom Benutzer bereitgestellten Skripten und Bibliotheken zu vermeiden, indem sie Djangos jQuery als django.jQuery benennen. So können wir Ihr eigenes Exemplar (wie wir es getan haben) sicher einbinden.

Seien Sie vorsichtig, wenn Sie mit Klassendefinitionen in Ihrer Haupt-Stylesheet ausflippen, da dies auch Auswirkungen auf die Admin-Site hat und ihre Funktionalität auf unerwartete Weise beeinträchtigen kann. In solch einem Fall können Sie immer mit Hilfe von Browser-Debugging-Tools wie Chrome DevTools, Firefox Developer Tools (insbesondere Page Inspector) oder Safari Developer Tools nachschauen, was los ist.

Demo und vollständiger Code

Diese hier besprochenen Implementierung wird so aussehen:

Sie können den gesamten Projektcode in meinem GitHub-Repository, luzdealba / djangovuejs, durchsuchen.

Abschluss

Während einige vielleicht durchaus berechtigt behaupten, dass es kaum Bedarf gibt, das Aussehen von Django’s Admin zu verändern, stimmt es auch, dass das nahtlose Integrieren der verschiedenen Endpunkte einer Website ein feines Hack für eine verbesserte Benutzerfreundlichkeit (UX) ist, da es einen reibungslosen Übergang zwischen den beiden ermöglicht und sogar eine kontrolliertere Navigation im Admin.

Und dies ist gar nicht so schwierig. Worauf Sie achten müssen, ist, wie Sie den Admin einrahmen und auch, wie Sie Drittanbieter-Bibliotheken mit Ihrem eigenen JavaScript-Code und Stylesheets mischen. Glücklicherweise können Sie sehr leicht einige Elemente in den Admin, andere in den Rest der Hauptseite und wieder andere in beide integrieren.

Hoffentlich haben Sie einige Ideen, wie Sie Django weiter anpassen können, auf eine Weise, die nicht so offensichtlich war!

Wenn Sie ein Vorwand brauchen, um eine Web-App zu erstellen, nur um mit dem Django Admin zu spielen, schauen Sie sich das letzte Wochen-Tutorial über das Prototyping einer Web-App mit Django und Vue.js an — es macht viel Spaß. Und wenn Sie Ihre Django-Fähigkeiten weiterentwickeln möchten, hat die SitePoint Premium Bibliothek jede Menge Ressourcen für Sie.

Häufig gestellte Fragen (FAQs) zur Anpassung des Django Admin mit Bootstrap

Welche Vorteile bietet die Anpassung des Django Admin mit Bootstrap?

Die Anpassung der Django Admin mit Bootstrap bietet mehrere Vorteile. Erstens verbessert es die visuelle Attraktivität Ihrer Admin-Oberfläche, was sie benutzerfreundlicher und intuitiver macht. Bootstrap ist ein beliebter Front-End-Framework, das eine Vielzahl von Designvorlagen für Typografie, Formulare, Schaltflächen und andere Schnittstellenkomponenten bereitstellt. Durch die Integration mit Django Admin können Sie diese Vorlagen nutzen, um eine optisch ansprechendere und funktionale Admin-Oberfläche zu erstellen. Zweitens ermöglicht es Ihnen, benutzerdefinierte Funktionalitäten für Ihre Admin-Oberfläche hinzuzufügen. Zum Beispiel können Sie benutzerdefinierte Aktionen, Filter und Formulare hinzufügen, um die Benutzerfreundlichkeit Ihrer Admin-Oberfläche zu verbessern. Schließlich kann es die Responsivität Ihrer Admin-Oberfläche verbessern, was sie auf verschiedenen Geräten und Bildschirmgrößen zugänglicher macht.

Wie füge ich benutzerdefinierte Aktionen zu Django Admin hinzu?

Django Admin ermöglicht es Ihnen, benutzerdefinierte Aktionen hinzuzufügen, die auf ausgewählte Objekte ausgeführt werden können. Um eine benutzerdefinierte Aktion hinzuzufügen, müssen Sie eine Funktion definieren, die die gewünschte Aktion auf die ausgewählten Objekte ausführt. Diese Funktion sollte drei Parameter annehmen: den Modell-Admin, die Anfrage und ein Queryset der ausgewählten Objekte. Sobald Sie diese Funktion definiert haben, können Sie sie dem ‚actions‘-Attribut Ihres Modell-Admins hinzufügen. Dies wird die Aktion im Dropdown-Menü auf der Admin-Änderungslistenseite verfügbar machen.

Kann ich das Aussehen und Gefühl von Django Admin mit Bootstrap anpassen?

Ja, Sie können das Aussehen und Gefühl des Django Admin mit Bootstrap anpassen. Bootstrap ist ein Frontend-Framework, das eine Vielzahl von Designvorlagen für Typografie, Formulare, Buttons und andere Benutzeroberflächenelemente bietet. Durch die Integration mit Django Admin können Sie diese Vorlagen nutzen, um eine optisch ansprechendere und funktionell ausgereiftere Administrationsoberfläche zu erstellen. Sie können die Farben, Schriftarten, Layout und andere Designelemente Ihrer Administrationsoberfläche an Ihr Markenidentität oder persönliche Vorlieben anpassen.

Wie füge ich benutzerdefinierte Filter zu Django Admin hinzu?

Django Admin ermöglicht es Ihnen, benutzerdefinierte Filter hinzuzufügen, die verwendet werden können, um die auf der Administrationsänderungslistenseite angezeigten Objekte zu filtern. Um einen benutzerdefinierten Filter hinzuzufügen, müssen Sie eine Unterklasse von django.contrib.admin.SimpleListFilter definieren. Diese Unterklasse sollte zwei Methoden definieren: lookups und queryset. Die lookups-Methode sollte eine Liste von Tupeln zurückgeben, die jeweils eine Filteroption darstellen. Die queryset-Methode sollte ein gefiltertes QuerySet basierend auf der ausgewählten Filteroption zurückgeben. Sobald Sie diese Unterklasse definiert haben, können Sie sie dem ‚list_filter‘-Attribut Ihrer Modellverwaltung hinzufügen.

Kann ich Bootstrap mit Django Admin ohne zusätzliche Pakete verwenden?

Obwohl es möglich ist, Bootstrap mit Django Admin ohne zusätzliche Pakete zu verwenden, ist es im Allgemeinen einfacher und effizienter, ein Paket wie django-admin-bootstrap zu verwenden. Dieses Paket bietet ein Bootstrap-basiertes Theme für Django Admin und erleichtert die Integration von Bootstrap mit Django Admin. Es bietet auch zusätzliche Funktionen wie responsives Design und benutzerdefinierte Formulardarstellung, die die Benutzerfreundlichkeit und Funktionalität Ihrer Administrationsoberfläche weiter verbessern können.

Wie kann ich die Formularfelder in Django Admin anpassen?

Django Admin ermöglicht es Ihnen, die Formularfelder zum Erstellen oder Bearbeiten von Objekten zu anpassen. Um ein Formularfeld zu überschreiben, müssen Sie die Methode ‘formfield_for_dbfield’ in Ihrem Modell-Admin überschreiben. Diese Methode sollte eine Instanz des Formularfelds zurückgeben, die für das angegebene Datenbankfeld verwendet wird. Sie können die Attribute, Widgets und die Validierungsverhalten des Formularfelds an Ihre Bedürfnisse anpassen.

Kann ich benutzerdefinierte Ansichten zu Django Admin hinzufügen?

Ja, Sie können benutzerdefinierte Ansichten zu Django Admin hinzufügen. Um eine benutzerdefinierte Ansicht hinzuzufügen, müssen Sie eine Methode in Ihrem Modell-Admin definieren, die die Ansichtslogik verarbeitet. Diese Methode sollte eine Anfrage als einzigen Parameter annehmen und eine Antwort zurückgeben. Sie können diese Methode dann mithilfe eines URL-Musters in der Methode ‘get_urls’ Ihres Modell-Admins auf eine URL abbilden. Dadurch wird die Ansicht über die Admin-Schnittstelle zugänglich.

Wie kann ich die Listenanzeige in Django Admin anpassen?

Django Admin ermöglicht es Ihnen, die Listenanzeige, die die Tabelle der auf der Seite zur Änderungsliste der Admin angezeigten Objekte ist, anzupassen. Um die Listenanzeige anzupassen, können Sie das Attribut ‘list_display’ Ihres Modell-Admins auf eine Liste von Feldnamen setzen, die Sie anzeigen möchten. Sie können auch Methodennamen in dieser Liste enthalten, die die entsprechende Methode für jedes Objekt aufrufen und das Ergebnis anzeigen.

Kann ich Django Admin für komplexe Datenbankmodelle verwenden?

Ja, Django Admin ist dafür ausgelegt, komplexe Datenbankmodelle zu verarbeiten. Es bietet eine Vielzahl von Funktionen, die Ihnen bei der Verwaltung komplexer Datenstrukturen helfen können, wie z.B. das direkte Bearbeiten verwandter Objekte, benutzerdefinierte Formularfelder und benutzerdefinierte Aktionen. Für sehr komplexe Datenstrukturen oder fortgeschrittene Datenbankoperationen müssen Sie jedoch möglicherweise Django Admin mit benutzerdefinierten Ansichten, Formularen oder Aktionen erweitern.

Wie kann ich die Leistung von Django Admin verbessern?

Es gibt mehrere Möglichkeiten, die Leistung von Django Admin zu verbessern. Eine Möglichkeit ist die Optimierung Ihrer Datenbankabfragen. Django Admin generiert automatisch Datenbankabfragen basierend auf Ihren Modelldefinitionen und Admin-Optionen. Diese Abfragen können jedoch manchmal ineffizient sein, insbesondere bei komplexen Datenstrukturen oder großen Datensätzen. Durch die Anpassung Ihrer Admin-Optionen und die Verwendung von Django’s Datenbankoptimierungsfeatures können Sie die Anzahl der Datenbankabfragen erheblich reduzieren und die Leistung Ihrer Admin-Schnittstelle verbessern. Eine weitere Möglichkeit ist die Verwendung von Zwischenspeicherung. Django bietet ein robustes Zwischenspeicherungsframework, das Sie zur Zwischenspeicherung der Ergebnisse kostenintensiver Operationen oder häufig genutzter Daten verwenden können. Durch die Verwendung von Zwischenspeicherung können Sie die Belastung Ihrer Datenbank reduzieren und die Reaktionsfähigkeit Ihrer Admin-Schnittstelle verbessern.

Source:
https://www.sitepoint.com/how-to-hack-redesign-customize-the-django-admin-with-bootstrap/