Python

Cara Menapis Data di Django?

Cara Menapis Data di Django?
Ini adalah syarat yang sangat umum bagi aplikasi web untuk memaparkan data di laman web berdasarkan minat pengguna. Ciri carian aplikasi menjadikannya lebih mesra pengguna.  Kerangka Django mempunyai built-in penapis () kaedah untuk menyaring data dari jadual pangkalan data. Jadual boleh mengandungi banyak rekod dan kadang-kadang menentukan beberapa data khusus diperlukan berdasarkan kriteria tertentu. Tugas ini menjadi lebih mudah dengan menggunakan penapis () kaedah dengan cara yang berbeza. Bagaimana data dari jadual pangkalan data dapat disaring menggunakan kaedah penyaringan dengan empat cara yang berbeza akan dibincangkan dalam tutorial ini.

Prasyarat

Sebelum mempraktikkan contoh tutorial ini, anda mesti menyelesaikan tugas berikut:

  1. Pasang Django versi 3+ di Ubuntu 20+ (lebih baik)
  2. Buat projek Django
  3. Jalankan pelayan Django untuk memeriksa pelayan berfungsi dengan betul atau tidak.

Sediakan Aplikasi Django

A. Jalankan arahan berikut untuk membuat aplikasi Django bernama tapisan.

$ python3 menguruskan.py startapp filterapp

B. Jalankan arahan berikut untuk membuat pengguna untuk mengakses pangkalan data Django. Sekiranya anda telah membuat pengguna sebelumnya, maka tidak perlu menjalankan perintah.

$ python3 menguruskan.py createuperuser

C. Tambahkan nama aplikasi di DIPASANG_APP sebahagian py fail.

INSTALLED_APPS = [

'filterapp'
]

D. Buat folder bernama templat di dalam tapisan folder dan tetapkan templat lokasi aplikasi di TEMPAT sebahagian py fail.

TEMPLATES = [

… .
'DIRS': ['/ rumah / fahmida / django_pro / filterapp / templat'],
… .
,
]

Buat Model untuk Jadual Pangkalan Data

Buka model.py fail dari tapisan folder dan tambahkan skrip berikut untuk menentukan struktur pekerja jadual. Pekerja kelas ditakrifkan untuk membuat jadual yang dinamakan pekerja dengan nama, jawatan, e-mel, jabatan, dan join_date ladang. Di sini, nama, jawatan, dan jabatan bidang akan menyimpan data watak, yang e-mel bidang akan menyimpan alamat e-mel dan join_date bidang akan menyimpan data tarikh.

model.py

# Modul model import
dari django.model import db
# Tentukan kelas untuk membuat jadual pekerja
Pekerja kelas (model.Model):
nama = model.CharField (panjang maksimum = 50)
post = model.CharField (panjang maksimum = 40)
e-mel = model.Bidang E-mel ()
jabatan = model.CharField (panjang maksimum = 30)
joinning_date = model.Bidang Tarikh ()

Jalankan penghijrahan arahan untuk membuat migrasi baru berdasarkan perubahan yang dibuat oleh model.

$ python3 menguruskan.py makemigrations filterapp

Jalankan berhijrah perintah untuk melaksanakan perintah SQL dan membuat semua jadual dalam pangkalan data yang ditentukan dalam model.py fail.

$ python3 menguruskan.py berhijrah

Ubah suai kandungan pentadbir.py fail dengan kandungan berikut. Di sini, pekerja kelas model didaftarkan menggunakan daftar () kaedah untuk memaparkan rekod pekerja jadual di papan pemuka pentadbiran Django.

pentadbir.py

# Import modul pentadbir
dari django.admin import contrib
# Import model Pekerja
dari .model import Pekerja
# Daftar model pekerja
pentadbir.tapak.daftar (Pekerja)

Jalankan URL berikut untuk membuka halaman log masuk pentadbir Django. Berikan nama pengguna dan kata laluan yang sah untuk membuka Papan Pemuka Pentadbiran Django untuk mengakses jadual pangkalan data.

Masukkan dua atau lebih rekod Kakitangan untuk menerapkan penapis pada data. Di sini lima rekod dimasukkan.

Buat cari.html fail di dalam filterapp / templat / folder dengan skrip berikut. Data dari pekerja jadual akan dipaparkan dalam fail templat ini. untuk gelung digunakan untuk membaca isi kandungan senarai objek pemboleh ubah yang akan dilalui dari fail pandangan. The nama, jawatan, dan jabatan nilai-nilai pekerja jadual akan dipaparkan dengan menggunakan senarai.

cari.html

<br>Tutorial Penapis Django<br>

Senarai Pekerja



    % untuk emp dalam object_list%

  1. emp.nama (emp.pos)


    emp.jabatan jabatan



  2. % endfor%

Buka pandangan.py fail dari tapisan folder dan ubah kandungan fail dengan skrip berikut. Nama model dan templat ditentukan dalam skrip.

pandangan.py

# Modul ListView import
dari django.pandangan.ListView import generik
# Import modul Pekerja
dari .model import Pekerja
# Modul import Q
dari django.db.model mengimport Q
# Tentukan kelas untuk menyaring data
kelas SearchEm Employee (ListView):
# Tentukan model
model = Pekerja
# Tentukan templat
templat_nama = 'carian.html '

Ubah suai kandungan url.py fail dengan kandungan berikut. Dalam skrip, 'cariEmp'jalan ditakrifkan untuk memanggil Cari Pekerja.as_lihat () kaedah yang akan menghantar semua data dan data yang disaring dari pekerja jadual ke fail templat.

url.py

# Import modul pentadbir
dari django.admin import contrib
# Laluan import dan sertakan modul
dari django.laluan import url, sertakan
# Import modul SearchEm Employee
dari filterapp.paparan import SearchEm Employee
urlpatterns = [
# Tentukan jalan untuk admin
jalan ('admin /', pentadbir.tapak.url),
# Tentukan jalan untuk carian
jalan ('searchEmp /', SearchEm Employee.as_lihat ()),
]

Output berikut akan muncul tanpa menerapkan penapisan untuk URL berikut.

http: // localhost: 8000 / SerachEmp

Tapis Data dengan Penapisan Ringkas

Tambahkan baris berikut di hujung pandangan.py fail untuk menyaring rekod pekerja jadual di mana nilai jawatan bidang adalah 'Akauntan'.

# Terapkan penapisan asas
queryset = Pekerja.benda.tapis (pos = 'Akauntan')

Output berikut akan muncul setelah menerapkan penapisan asas.

Tapis Data dengan Pelbagai Medan

Tambahkan baris berikut di hujung pandangan.py fail untuk menyaring rekod pekerja jadual di mana nilai jabatan bidang adalah 'HT'dan e-mel tersebut bidang adalah '[dilindungi e-mel]'.

# Terapkan penapisan dengan pelbagai medan
queryset = Pekerja.benda.tapis (jabatan = 'HR', e-mel = '[dilindungi e-mel]')

Output berikut akan muncul setelah menerapkan penapisan berganda.

Tapis Data dengan Objek Q

Tambahkan baris berikut di hujung pandangan.py fail untuk menyaring rekod pekerja jadual di mana nilai jawatan bidang adalah 'Pengurus'atau nilai jabatan bidang adalah 'Jualan'.

# Terapkan penapisan dengan menggunakan objek Q
queryset = Pekerja.benda.penapis (Q (jawatan = 'Pengurus') | Q (jabatan = 'Jualan'))

Output berikut akan muncul setelah menerapkan penapisan objek Q.

Tapis Data dengan Menggunakan Rantai Penapis

Tambahkan baris berikut di hujung pandangan.py fail untuk menyaring rekod pekerja jadual di mana nilai jabatan medan akan diperiksa terlebih dahulu dan jika ia kembali benar maka nilai nama bidang akan diperiksa.

# Terapkan penapisan dengan merantai
queryset = Pekerja.benda.penapis (jabatan = 'HR').penapis (nama = 'Mehrab Hossain')

Output berikut akan muncul setelah menerapkan penyaringan rantai.

Kesimpulannya

Data dapat disaring dalam Django dengan banyak cara berdasarkan keperluan aplikasi. Empat cara penyaringan yang berbeza dijelaskan dalam tutorial ini untuk memahami asas-asas penyaringan Django. Ini adalah penyaringan sederhana, penapisan berganda, penyaringan dengan objek Q, dan rantai penapis.

Cara memuat turun dan Mainkan Sid Meier's Civilization VI di Linux
Pengenalan permainan Civilization 6 adalah konsep moden mengenai konsep klasik yang diperkenalkan dalam siri permainan Age of Empires. Idea itu cukup ...
Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...
Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...