Heim >Backend-Entwicklung >Python-Tutorial >Python-Serverprogrammierung: Verwendung von django-mptt für die Verarbeitung von Baumdatenstrukturen
Python ist eine hervorragende Programmiersprache, die häufig in der serverseitigen Programmierung verwendet wird. Bei der serverseitigen Programmierung ist die Verarbeitung von Baumdatenstrukturen eine häufige Anforderung. Zu diesem Zeitpunkt müssen Sie einige Tools verwenden, um dies zu erreichen. Unter diesen ist django-mptt ein sehr praktisches Tool. In diesem Artikel wird die Verwendung von django-mptt für die Verarbeitung von Baumdatenstrukturen vorgestellt.
1. Was ist Django-mptt?
django-mptt ist eine Anwendung zur Baumstrukturverarbeitung, die auf dem Django-Framework basiert. Sie kann uns bei der Abwicklung verschiedener Vorgänge wie dem Erstellen, Aktualisieren, Löschen und Sortieren von Baumstrukturdaten helfen. Es kann unsere Codierungsarbeit erheblich vereinfachen und es uns ermöglichen, uns mehr auf die Verarbeitung der Geschäftslogik zu konzentrieren.
2. Installation von django-mptt
Bevor wir django-mptt verwenden, müssen wir es installieren. Geben Sie den folgenden Befehl in die Befehlszeile ein:
pip install django-mptt
3. Grundlegende Verwendung von django-mptt
Zuerst müssen wir ein Modell in models.py erstellen, der übergeordneten Klasse des Baums Struktur, Der Code lautet wie folgt:
from django.db import models from mptt.models import MPTTModel, TreeForeignKey class Category(MPTTModel): name = models.CharField(max_length=50, unique=True) parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children') class MPTTMeta: order_insertion_by = ['name'] def __str__(self): return self.name
In diesem Modell verwenden wir die beiden Klassen MPTTModel und TreeForeignKey. Unter diesen ist MPTTModel die von django-mptt bereitgestellte Modellbasisklasse zum Verarbeiten von Baumstrukturen und TreeForeignKey ist die von django-mptt bereitgestellte Klasse zum Erstellen von Fremdschlüsseln. Wir definieren ein Namensattribut und ein übergeordnetes Attribut im Kategoriemodell. Das übergeordnete Attribut ist vom Typ TreeForeignKey und seine Beziehung zu sich selbst ist eine Viele-zu-Eins-Beziehung. In der MPTTMeta-Klasse geben wir das Attribut order_insertion_by an, das beim Sortieren der Baumstruktur eine Rolle spielt.
Nachdem wir das Modell erstellt haben, müssen wir es migrieren, damit das Modell Datenbanktabellen auf dem Server erstellen kann. Geben Sie den folgenden Befehl in die Befehlszeile ein:
python manage.py makemigrations python manage.py migrate
3. Daten hinzufügen
Nachdem wir das Kategoriemodell erstellt haben, müssen wir einige Daten hinzufügen, damit wir wirklich verstehen können, wie es verwendet wird. Geben Sie den folgenden Befehl im Terminal ein:
python manage.py shell
Sobald wir uns in der Django-Shell befinden, können wir wie unten gezeigt einige Daten hinzufügen:
>>> from blog.models import Category >>> root = Category(name='root') >>> root.save() >>> child1 = Category(name='child1', parent=root) >>> child1.save() >>> child2 = Category(name='child2', parent=root) >>> child2.save() >>> child11 = Category(name='child11', parent=child1) >>> child11.save()
In diesem Code erstellen wir einen Wurzelknoten namens root und speichern ihn in der Datenbank. Dann haben wir zwei untergeordnete Knoten mit den Namen child1 und child2 erstellt und eine Eltern-Kind-Beziehung zwischen ihnen und dem Wurzelknoten hergestellt. Schließlich erstellen wir einen untergeordneten Knoten mit dem Namen child11 und stellen eine Eltern-Kind-Beziehung mit child1 her.
4. Daten abfragen
Nachdem wir die Daten hinzugefügt haben, können wir unsere Baumstrukturdaten über einige von django-mptt bereitgestellte APIs abfragen, wie unten gezeigt:
>>> category_tree = Category.objects.all() >>> category_tree [<Category: root>, <Category: child1>, <Category: child11>, <Category: child2>] >>> category_tree.get(name="root").get_family() [<Category: root>, <Category: child1>, <Category: child11>, <Category: child2>] >>> category_tree.get(name="root").get_children() [<Category: child1>, <Category: child2>] >>> category_tree.get(name="child1").get_children() [<Category: child11>] >>> category_tree.get(name="child11").get_parent() <Category: child1>
In diesem Code verwenden wir Category .objects.all() Ruft die Liste der gesamten Datenstruktur ab und verwendet die Methode get_family(), um die gesamte Datenstruktur abzurufen. Wir haben auch die Methode get_children() verwendet, um die untergeordneten Knoten eines Knotens abzurufen, und die Methode get_parent(), um den übergeordneten Knoten eines Knotens abzurufen.
5. Daten löschen
Nachdem wir die Daten abgefragt haben, können wir sie auch löschen. Wenn wir einen Löschvorgang durchführen, müssen wir darauf achten, zuerst alle untergeordneten Knoten des Knotens zu löschen, da sonst eine Ausnahme ausgelöst wird. Unten ist der Code für den Löschvorgang:
>>> child1.delete() >>> # 删除child1后,我们执行以下查询操作 >>> category_tree = Category.objects.all() >>> category_tree [<Category: root>, <Category: child2>]
In diesem Beispiel löschen wir den Knoten child1 und fragen die Datenstruktur mit der Methode get_all() ab. Zu diesem Zeitpunkt können wir sehen, dass Child1 und Child11 aus der Datenstruktur gelöscht wurden.
4. Zusammenfassung
In diesem Artikel haben wir die grundlegende Verwendung von Django-mptt gelernt, einschließlich der Erstellung von Modellen, der Migration, dem Hinzufügen von Daten, dem Abfragen von Daten und dem Löschen von Daten. Mit django-mptt können wir problemlos das Hinzufügen, Löschen, Ändern und Abfragen von baumstrukturierten Daten durchführen. Ich hoffe, dass dieser Artikel für Ihr Studium hilfreich sein wird.
Das obige ist der detaillierte Inhalt vonPython-Serverprogrammierung: Verwendung von django-mptt für die Verarbeitung von Baumdatenstrukturen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!