Python

Kā filtrēt datus Django?

Kā filtrēt datus Django?
Tā ir ļoti izplatīta prasība, lai tīmekļa lietojumprogramma rādītu datus tīmekļa lapā, pamatojoties uz lietotāja interesi. Lietojumprogrammas meklēšanas funkcija padara to lietotājam draudzīgāku.  Django ietvarā ir iebūvēts filtrs () metode datu filtrēšanai no datu bāzes tabulām. Tabulā var būt daudz ierakstu, un dažreiz ir jānosaka daži specifiski dati, pamatojoties uz konkrētiem kritērijiem. Izmantojot šo uzdevumu, kļūst vieglāk filtrs () metodi dažādos veidos. Šajā apmācībā tiks apspriests, kā datus no datu bāzes tabulas var filtrēt, izmantojot filtrēšanas metodi četros dažādos veidos.

Priekšnoteikumi

Pirms praktizēt šīs apmācības piemērus, jums ir jāveic šādi uzdevumi:

  1. Instalējiet Django versiju 3+ Ubuntu 20+ (vēlams)
  2. Izveidojiet Django projektu
  3. Palaidiet Django serveri, lai pārbaudītu, vai serveris darbojas pareizi.

Iestatiet Django lietotni

A. Palaidiet šo komandu, lai izveidotu Django lietotni ar nosaukumu filterapp.

$ python3 pārvaldīt.py startapp filterapp

B. Palaidiet šo komandu, lai izveidotu lietotāju piekļuvei Django datu bāzei. Ja esat iepriekš izveidojis lietotāju, komanda nav jāpalaiž.

$ python3 pārvaldīt.py rada liellietotāju

C. Pievienojiet lietotnes nosaukumu mapē INSTALLED_APP daļa no py failu.

INSTALLED_APPS = [

'filterapp'
]

D. Izveidojiet mapi ar nosaukumu veidnes iekšpusē filterapp mapi un iestatiet veidnes lietotnes atrašanās vieta Veidnes daļa no py failu.

PARAUGI = [

… .
'DIRS': ['/ home / fahmida / django_pro / filterapp / templates'],
… .
,
]

Izveidojiet datu bāzes tabulas modeli

Atveriet modeļiem.py failu no filterapp mapi un pievienojiet šādu skriptu, lai definētu darbinieki tabulas. Darbinieks klase ir definēta, lai izveidotu tabulu ar nosaukumu darbinieki ar nosaukums, amats, e-pasts, nodaļa, un pievienošanās_datums lauki. Šeit, nosaukums, amats, un nodaļa laukos tiks saglabāti rakstzīmju dati, e-pasts laukā tiks saglabāta e-pasta adrese un pievienošanās_datums laukā tiks saglabāti datuma dati.

modeļiem.py

# Modeļu importēšana
no django.db importēšanas modeļi
# Definējiet klasi, lai izveidotu darbinieku tabulu
klases darbinieks (modeļi.Modelis):
nosaukums = modeļi.CharField (maks. Garums = 50)
post = modeļi.CharField (maks. Garums = 40)
e-pasts = modeļi.EmailField ()
nodaļa = modeļi.CharField (maks. Garums = 30)
pievienošanās_datums = modeļi.DateField ()

Palaidiet makemigrācijas komandu, lai izveidotu jaunu migrāciju, pamatojoties uz modeļu veiktajām izmaiņām.

$ python3 pārvaldīt.py makemigrations filterapp

Palaidiet migrēt komandu izpildīt SQL komandas un izveidot visas tabulas datu bāzē, kas definētas modeļiem.py failu.

$ python3 pārvaldīt.py migrēt

Mainīt programmas saturu admin.py failu ar šādu saturu. Šeit, darbinieks modeļu klase tiek reģistrēta, izmantojot reģistrs () metode, lai parādītu darbinieku uzskaite tabulas Django administrācijas informācijas panelī.

admin.py

# Importēt administratora moduli
no django.ieguldījuma importēšanas administrators
# Importēt darbinieku modeli
no .modeļi importē Darbinieks
# Reģistrējiet darbinieku modeli
admin.vietne.reģistrēties (darbinieks)

Palaidiet šo URL, lai atvērtu Django administratora pieteikšanās lapu. Norādiet derīgu lietotājvārdu un paroli, lai atvērtu Django administrācijas informācijas panelis lai piekļūtu datu bāzes tabulām.

Ievietojiet divus vai vairākus darbinieku ierakstus, lai datiem lietotu filtru. Šeit tiek ievietoti pieci ieraksti.

Izveidojiet Meklēt.html failu iekšpusē filterapp / templates / mapi ar šādu skriptu. Dati no darbinieks tabula tiks parādīta šajā veidnes failā. priekš cilpa tiek izmantota, lai lasītu objektu_ saraksts mainīgais, kas tiks nodots no skata faila. The nosaukums, amats, un nodaļa vērtības darbinieki tabula tiks parādīta, izmantojot sarakstu.

Meklēt.html

<br>Django filtra apmācība<br>

Darbinieku saraksts



    % par emp_ objekta sarakstā%

  1. emp.nosaukums (emp.izlikt)


    emp.departaments departaments



  2. % endfor%

Atveriet skati.py failu no filterapp mapi un modificējiet faila saturu ar šādu skriptu. Modeļa un veidnes nosaukumi ir definēti skriptā.

skati.py

# Importēt ListView moduli
no django.skati.vispārīgs importēšanas saraksts ListView
# Importēt darbinieku moduli
no .modeļi importē Darbinieks
# Importēt Q moduli
no django.db.modeļi importē Q
# Definējiet klasi datu filtrēšanai
klases SearchEmployee (ListView):
# Definējiet modeli
modelis = darbinieks
# Definēt veidni
template_name = 'meklēt.html '

Mainīt programmas saturu URL.py failu ar šādu saturu. Skriptā “meklētEmpir noteikts ceļš, lai izsauktu SearchEmployee.as_view () metode, kas nosūtīs visus datus un filtrētos datus darbinieki tabulas veidnes failā.

URL.py

# Importēt administratora moduli
no django.ieguldījuma importēšanas administrators
# Importēt ceļu un iekļaut moduli
no django.URL importēšanas ceļš, iekļaujiet
# Importēt SearchEmployee moduli
no filterapp.skati importē SearchEmployee
urlpatterns = [
# Definējiet administratora ceļu
ceļš ('admin /', admin.vietne.URL),
# Definējiet meklēšanas ceļu
ceļš ('searchEmp /', SearchEmployee.as_view ()),
]

Šī izeja parādīsies, nepiemērojot filtrēšanu šim URL.

http: // localhost: 8000 / SerachEmp

Filtrējiet datus, izmantojot vienkāršu filtrēšanu

Pievienojiet šādu rindu rindas beigās skati.py failu, lai filtrētu darbinieki tabula, kur vērtība pastu lauks ir 'Grāmatvede".

# Lietot pamata filtrēšanu
queryset = Darbinieks.objektiem.filtrs (post = 'Grāmatvedis')

Pēc pamata filtrēšanas izmantošanas parādīsies šāda izeja.

Filtrējiet datus ar vairākiem laukiem

Pievienojiet šādu rindu rindas beigās skati.py failu, lai filtrētu darbinieki tabula, kur vērtība nodaļa lauks ir 'HT' un e-pasts lauks ir “[e-pasts aizsargāts]”.

# Pielietojiet filtrēšanu ar vairākiem laukiem
queryset = Darbinieks.objektiem.filtrs (departaments = 'HR', e-pasts = '[e-pasts aizsargāts]')

Pēc vairāku filtru izmantošanas parādīsies šāda izeja.

Filtrējiet datus ar Q objektu

Pievienojiet šādu rindu rindas beigās skati.py failu, lai filtrētu darbinieki tabula, kur vērtība pastu lauks ir 'Vadītājsvai vērtība nodaļa lauks ir 'Pārdošana".

# Pielietojiet filtrēšanu, izmantojot Q objektus
queryset = Darbinieks.objektiem.filtrs (Q (post = 'Vadītājs') | Q (departaments = 'Pārdošana'))

Pēc Q objektu filtrēšanas izmantošanas parādīsies šāda izeja.

Filtrējiet datus, izmantojot filtru ķēdi

Pievienojiet šādu rindu rindas beigās skati.py failu, lai filtrētu darbinieki tabula, kur vērtība nodaļa Vispirms tiks pārbaudīts lauks, un, ja tas atgūs patiesu, tad lauka vērtība nosaukums lauks tiks pārbaudīts.

# Pielietojiet filtrēšanu, izmantojot ķēdi
queryset = Darbinieks.objektiem.filtrs (departaments = 'HR').filtrs (nosaukums = 'Mehrab Hossain')

Pēc filtru ķēdes izmantošanas parādīsies šāda izeja.

Secinājums

Datus var filtrēt Django daudzos veidos, pamatojoties uz lietojumprogrammas prasībām. Šajā apmācībā tika izskaidroti četri dažādi filtrēšanas veidi, lai izprastu Django filtrēšanas pamatus. Tās ir vienkārša filtrēšana, vairākkārtēja filtrēšana, filtrēšana ar Q objektu un filtru ķēde.

10 labākās spēles, kuras spēlēt Ubuntu
Windows platforma ir bijusi viena no dominējošajām spēļu platformām, jo ​​mūsdienās tiek attīstīts milzīgs spēļu skaits, lai atbalstītu Windows. Vai k...
5 labākās arkādes spēles Linux
Mūsdienās datori ir nopietnas mašīnas, kuras izmanto spēlēšanai. Ja jūs nevarat iegūt jauno augsto rezultātu, jūs zināt, ko es domāju. Šajā ierakstā j...
Cīņa par Vesnotu 1.13.6 Izlaista attīstība
Cīņa par Vesnotu 1.13.6 izlaists pagājušajā mēnesī, ir sestais izstrādes izlaidums 1.13.x sērija un tā nodrošina vairākus uzlabojumus, īpaši lietotāja...