Prasyarat
Sebelum mempraktikkan contoh tutorial ini, anda mesti menyelesaikan tugas berikut:
- Pasang Django versi 3+ di Ubuntu 20+ (lebih baik)
- Buat projek Django
- 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 filterappB. 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 createuperuserC. 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 importdari 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 filterappJalankan berhijrah perintah untuk melaksanakan perintah SQL dan membuat semua jadual dalam pangkalan data yang ditentukan dalam model.py fail.
$ python3 menguruskan.py berhijrahUbah 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 pentadbirdari 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
Tutorial Penapis Django
Senarai Pekerja
emp.nama (emp.pos)
emp.jabatan jabatan
% untuk emp dalam object_list%
% 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 importdari 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 pentadbirdari 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 asasqueryset = 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 medanqueryset = 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 Qqueryset = 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 merantaiqueryset = 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.