Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengaturcaraan pelayan Python: menggunakan django-mptt untuk pemprosesan struktur data pokok

Pengaturcaraan pelayan Python: menggunakan django-mptt untuk pemprosesan struktur data pokok

王林
王林asal
2023-06-18 09:03:111786semak imbas

Python ialah bahasa pengaturcaraan yang sangat baik yang digunakan secara meluas dalam pengaturcaraan sebelah pelayan. Dalam pengaturcaraan bahagian pelayan, pemprosesan struktur data pokok adalah keperluan biasa Pada masa ini, anda perlu menggunakan beberapa alat untuk membantu mencapainya. Antaranya, django-mptt ialah alat yang sangat mudah Artikel ini akan memperkenalkan cara menggunakan django-mptt untuk pemprosesan struktur data pokok.

1. Apakah itu django-mptt?

django-mptt ialah aplikasi pemprosesan struktur pokok berdasarkan rangka kerja Django Ia boleh membantu kami mengendalikan pelbagai operasi seperti penciptaan, kemas kini, pemadaman dan pengisihan data struktur pokok. Ia boleh memudahkan kerja pengekodan kami dan membolehkan kami memberi lebih tumpuan pada pemprosesan logik perniagaan.

2. Pemasangan django-mptt

Sebelum menggunakan django-mptt, kita perlu memasangnya. Masukkan arahan berikut dalam baris arahan:

pip install django-mptt

3 Penggunaan asas django-mptt

  1. Buat model

Pertama, kita perlu mencipta model dalam model. Cipta model dalam py, yang merupakan kelas induk bagi struktur pokok. Antaranya, MPTTModel ialah kelas asas model yang disediakan oleh django-mptt untuk memproses struktur pokok, dan TreeForeignKey ialah kelas yang disediakan oleh django-mptt untuk mencipta kunci asing. Kami mentakrifkan atribut nama dan atribut induk dalam model Kategori. Atribut induk adalah daripada jenis TreeForeignKey, dan hubungannya dengan dirinya sendiri ialah hubungan banyak dengan satu. Dalam kelas MPTTMeta, kami menentukan atribut order_insertion_by, yang akan memainkan peranan apabila kami mengisih struktur pokok.

Migrate
  1. Selepas kita mencipta model, kita perlu memindahkannya supaya model boleh mencipta jadual pangkalan data dalam pelayan. Masukkan arahan berikut dalam baris arahan:
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

3. Tambah data

Selepas kita mencipta model Kategori, kita perlu menambah beberapa data supaya kita benar-benar memahami penggunaannya. Masukkan arahan berikut dalam terminal:

python manage.py makemigrations
python manage.py migrate

Selepas memasukkan shell Django, kami boleh menambah beberapa data seperti yang ditunjukkan di bawah:

python manage.py shell

Dalam kod ini, kami mencipta nod akar dan menyimpannya ke pangkalan data. Kemudian, kami mencipta dua nod anak bernama child1 dan child2, dan mewujudkan hubungan ibu bapa-anak antara mereka dan nod akar. Akhir sekali, kami mencipta nod anak bernama child11 dan mewujudkan hubungan ibu bapa-anak dengan child1.

4. Data pertanyaan

Selepas kami menambah data, kami boleh menanyakan data struktur pepohon kami melalui beberapa API yang disediakan oleh django-mptt, seperti yang ditunjukkan di bawah:

>>> 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()

Dalam kod ini, kami menggunakan Category.objects.all() untuk mendapatkan senarai keseluruhan struktur data dan menggunakan kaedah get_family() untuk mendapatkan keseluruhan struktur data. Kami juga menggunakan kaedah get_children() untuk mendapatkan nod anak nod, dan kaedah get_parent() untuk mendapatkan nod induk nod.

5. Padamkan data

Selepas kami menanyakan data, kami juga boleh memadamkannya. Apabila melakukan operasi pemadaman, kita perlu memberi perhatian kepada pemadaman semua nod anak nod terlebih dahulu, jika tidak pengecualian akan dilemparkan. Berikut ialah kod untuk operasi pemadaman:

>>> 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>

Dalam contoh ini, kami memadamkan nod child1 dan menanyakan struktur data menggunakan kaedah get_all(). Pada masa ini, kita dapat melihat bahawa child1 dan child11 telah dipadamkan daripada struktur data.

4. Ringkasan

Melalui artikel ini, kami telah mempelajari penggunaan asas django-mptt, termasuk mencipta model, memindahkan, menambah data, menanya data dan memadamkan data. Menggunakan django-mptt, kami boleh mengendalikan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data berstruktur pepohon dengan mudah. Saya harap artikel ini dapat membantu kajian anda.

Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: menggunakan django-mptt untuk pemprosesan struktur data pokok. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn