Forudsætninger
Inden du praktiserer eksemplerne på denne vejledning, skal du udføre følgende opgaver:
- Installer Django version 3+ på Ubuntu 20+ (helst)
- Opret et Django-projekt
- Kør Django-serveren for at kontrollere, at serveren fungerer korrekt eller ej.
Opsæt en Django-app
EN. Kør følgende kommando for at oprette en Django-app med navnet filterapp.
$ python3 administrere.py startapp filterappB. Kør følgende kommando for at oprette brugeren til adgang til Django-databasen. Hvis du har oprettet brugeren før, behøver du ikke køre kommandoen.
$ python3 administrere.py skaberbrugerC. Tilføj appnavnet i INSTALLERET_APP en del af py fil.
INSTALLED_APPS = [..
'filterapp'
]
D. Opret en mappe med navnet skabeloner inde i filterapp mappe og indstil skabeloner placering af appen i MALLER en del af py fil.
MALLER = [.. .
'DIRS': ['/ home / fahmida / django_pro / filterapp / templates'],
.. .
,
]
Opret en model til databasetabellen
Åbn modeller.py fil fra filterapp mappen og tilføj følgende script for at definere strukturen af medarbejdere tabeller. Medarbejder klasse er defineret til at oprette en tabel med navnet medarbejdere med navn, post, e-mail, afdeling, og tilslutning_dato felter. Her, navn, post, og afdeling felter gemmer karakterdata, e-mail feltet gemmer e-mail-adressen og tilslutning_dato felt gemmer datadata.
modeller.py
# Importmodulmodulfra django.db import modeller
# Definer klasse for at oprette medarbejdertabel
klasse Medarbejder (modeller.Model):
navn = modeller.CharField (max_length = 50)
post = modeller.CharField (max_length = 40)
e-mail = modeller.EmailField ()
afdeling = modeller.CharField (max_length = 30)
joinning_date = modeller.DateField ()
Kør makemigrationer kommando til at oprette en ny migration baseret på ændringer foretaget af modellerne.
$ python3 administrere.py makemigrations filterappKør migrere kommando til at udføre SQL-kommandoer og oprette alle tabeller i databasen, der er defineret i modeller.py fil.
$ python3 administrere.py migrereRediger indholdet af admin.py fil med følgende indhold. Her, den ansatte klasse af modeller registreres ved hjælp af registret () metode til at vise optegnelser over medarbejdere tabeller i Django-administrationens dashboard.
admin.py
# Importér admin-modulfra django.import importadministrator
# Importer medarbejdermodel
fra .modeller importerer medarbejder
# Registrer medarbejdermodel
admin.websted.register (Medarbejder)
Kør følgende URL for at åbne Django admin-login-siden. Angiv det gyldige brugernavn og adgangskode for at åbne Django Administration Dashboard for at få adgang til databasetabellerne.
Indsæt to eller flere medarbejderregistreringer for at anvende filteret på dataene. Her indsættes fem poster.
Opret Søg.html fil inde i filterapp / skabeloner / mappe med følgende script. Dataene fra medarbejder tabellen vises i denne skabelonfil. til loop bruges til at læse indholdet af objekt_liste variabel, der sendes fra visningsfilen. Det navn, post, og afdeling værdier af medarbejdere tabellen vises ved hjælp af listen.
Søg.html
Vejledning til Django-filter
Medarbejderliste
emp.navn (emp.post)
emp.afdeling afdeling
% for emp i object_list%
% endfor%
Åbn synspunkter.py fil fra filterapp mappe og rediger indholdet af filen med følgende script. Model- og skabelonnavne er defineret i scriptet.
synspunkter.py
# Import ListView-modulfra django.synspunkter.generisk import ListView
# Importér medarbejdermodul
fra .modeller importerer medarbejder
# Importer Q-modul
fra django.db.modeller importerer Q
# Definer klasse til filtrering af data
klasse Søgemedarbejder (ListView):
# Definer model
model = Medarbejder
# Definer skabelon
template_name = 'søg.html '
Rediger indholdet af webadresser.py fil med følgende indhold. I manuskriptet står 'searchEmpstien er defineret til at kalde Søg medarbejder.som_visning () metode, der sender alle data og de filtrerede data fra medarbejdere tabel til skabelonfilen.
webadresser.py
# Importér admin-modulfra django.import importadministrator
# Importer sti og inkluder modul
fra django.urls importsti, inkluderer
# Importer søgemodulmodul
fra filterapp.visninger importerer SearchEmployee
urlmønstre = [
# Definer stien til admin
sti ('admin /', admin.websted.webadresser),
# Definer stien til søgning
sti ('searchEmp /', SearchEmployee.som_visning ()),
]
Følgende output vises uden anvendelse af filtrering til følgende URL.
http: // localhost: 8000 / SerachEmp
Filtrer data ved simpel filtrering
Tilføj følgende linje i slutningen af synspunkter.py fil for at filtrere posterne for medarbejdere tabel, hvor værdien af stolpe felt er 'Revisor''.
# Anvend grundlæggende filtreringqueryset = Medarbejder.genstande.filter (post = 'Revisor')
Følgende output vises efter anvendelse af grundlæggende filtrering.
Filtrer data med flere felter
Tilføj følgende linje i slutningen af synspunkter.py fil for at filtrere posterne for medarbejdere tabel, hvor værdien af afdeling felt er 'HT'og e-mailen felt er '[email protected]'.
# Anvend filtrering med flere felterqueryset = Medarbejder.genstande.filter (department = 'HR', email = '[email protected]')
Følgende output vises efter anvendelse af flere filtreringer.
Filtrer data med Q-objekt
Tilføj følgende linje i slutningen af synspunkter.py fil for at filtrere posterne for medarbejdere tabel, hvor værdien af stolpe felt er 'Manager'eller værdien af afdeling felt er 'Salg''.
# Anvend filtrering ved hjælp af Q-objekterqueryset = Medarbejder.genstande.filter (Q (post = 'Manager') | Q (department = 'Sales'))
Følgende output vises efter anvendelse af Q-objektfiltrering.
Filtrer data ved hjælp af filterkæde
Tilføj følgende linje i slutningen af synspunkter.py fil for at filtrere posterne for medarbejdere tabel, hvor værdien af afdeling felt kontrolleres først, og hvis det returnerer sandt, så værdien af navn felt kontrolleres.
# Anvend filtrering ved at kædequeryset = Medarbejder.genstande.filter (afdeling = 'HR').filter (name = 'Mehrab Hossain')
Følgende output vises efter anvendelse af filterkæde.
Konklusion
Dataene kan filtreres i Django på mange måder baseret på applikationskravene. Fire forskellige måder til filtrering blev forklaret i denne vejledning for at forstå det grundlæggende ved Django-filtrering. Disse er simpel filtrering, flerfiltrering, filtrering med Q-objekt og filterkæde.