Piton

Az adatok szűrése Django-ban?

Az adatok szűrése Django-ban?
Nagyon gyakori követelmény, hogy a webalkalmazás a felhasználó érdeklődése alapján jelenítsen meg adatokat a weboldalon. Az alkalmazás keresési funkciója felhasználóbarátabbá teszi.  A Django keretrendszer beépített szűrő() módszer az adatok szűrésére az adatbázis táblákból. A táblázat sok rekordot tartalmazhat, és néha meg kell határoznia bizonyos adatokat az adott kritériumok alapján. Ez a feladat használatával könnyebbé válik a szűrő () módszer különböző módokon. Hogy hogyan lehet négyféle módon szűrni az adatbázis-táblából származó adatokat a szűrési módszerrel, arról ebben az oktatóanyagban lesz szó.

Előfeltételek

Az oktatóanyag példáinak gyakorlása előtt el kell végeznie a következő feladatokat:

  1. Telepítse a Django 3+ verziót az Ubuntu 20+ verzióra (lehetőleg)
  2. Hozzon létre egy Django projektet
  3. Futtassa a Django szervert annak ellenőrzésére, hogy a szerver megfelelően működik-e vagy sem.

Állítson be egy Django alkalmazást

A. Futtassa a következő parancsot egy Django alkalmazás létrehozásához filterapp.

$ python3 kezelni.py startapp filterapp

B. Futtassa a következő parancsot a felhasználó létrehozásához a Django adatbázis eléréséhez. Ha korábban létrehozta a felhasználót, akkor nem kell futtatnia a parancsot.

$ python3 kezelni.py létrehozza a túlfelhasználót

C. Adja hozzá az alkalmazás nevét a INSTALLED_APP része a py fájl.

INSTALLED_APPS = [

„filterapp”
]

D. Hozzon létre egy nevű mappát sablonok benne filterapp mappát, és állítsa be a sablonok az alkalmazás helye a Sablonok része a py fájl.

Sablonok = [

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

Hozzon létre egy modellt az adatbázis táblához

Nyissa meg a modellek.py fájl a filterapp mappát, és adja hozzá a következő parancsfájlt a struktúra meghatározásához alkalmazottak táblázatok. Munkavállaló osztály definiálva van egy tábla létrehozására alkalmazottak val vel név, posta, e-mail, osztály, és csatlakozási dátum mezők. Itt, név, posta, és osztály mezők karakteradatokat tárolnak, a email mező az e-mail címet és a csatlakozási dátum mező a dátum adatait tárolja.

modellek.py

# Modellek importálása modul
djangótól.db import modellek
# Definiálja az osztályt az alkalmazottak táblázatának létrehozásához
osztály alkalmazottja (modellek.Modell):
név = modellek.CharField (max_hossz = 50)
post = modellek.CharField (max_hossz = 40)
email = modellek.EmailField ()
osztály = modellek.CharField (max_hossz = 30)
csatlakozási dátum = modellek.DateField ()

Futtassa a makemigrációk parancsot egy új migráció létrehozására a modellek által végrehajtott változtatások alapján.

$ python3 kezelni.py makemigrations filterapp

Futtassa a vándorol parancs az SQL parancsok végrehajtására és az adatbázisban az modellek.py fájl.

$ python3 kezelni.py vándorolnak

Módosítsa a admin.py fájl a következő tartalommal. Itt, az alkalmazott a modellek osztályát a A regisztráció() módszer a alkalmazottak nyilvántartása táblázatok a Django adminisztráció irányítópultján.

admin.py

# Adminisztrációs modul importálása
djangótól.közreműködés import admin
# Alkalmazott modell importálása
tól től .modellek importálják az alkalmazottat
# Regisztráljon alkalmazott modellt
admin.webhely.nyilvántartás (alkalmazott)

Futtassa a következő URL-t a Django rendszergazda bejelentkezési oldalának megnyitásához. Adja meg az érvényes felhasználónevet és jelszót a Django Administration Dashboard az adatbázis-táblák eléréséhez.

Helyezzen be két vagy több alkalmazotti rekordot a szűrő alkalmazásához. Itt öt rekord kerül beillesztésre.

Hozza létre a keresés.html fájl a filterapp / templates / mappát a következő szkript segítségével. Az adatok a munkavállaló táblázat jelenik meg ebben a sablonfájlban. mert ciklus segítségével olvasható le a object_list változó, amelyet a nézetfájl át fog adni. A név, posta, és osztály értékei alkalmazottak táblázat a lista használatával jelenik meg.

keresés.html

<br>Django szűrő bemutató<br>

Munkavállalói lista



    % az emp-hez az objektumlistában%

  1. emp.név (emp.post)


    emp.osztály részleg



  2. % endfor%

Nyissa meg a nézetek.py fájl a filterapp mappába, és módosítsa a fájl tartalmát a következő szkript segítségével. A modell és a sablon nevét a szkript határozza meg.

nézetek.py

# ListView modul importálása
djangótól.nézetek.általános importálás ListView
# Alkalmazott modul importálása
tól től .modellek importálják az alkalmazottat
# Q modul importálása
djangótól.db.modellek importálják Q-t
# Definiálja az adatok szűrésének osztályát
osztály SearchEmployee (ListView):
# Definiálja a modellt
modell = Alkalmazott
# Definiálja a sablont
template_name = 'keresés.html '

Módosítsa a URL-ek.py fájl a következő tartalommal. A szkriptben asearchEmp'elérési útja a SearchEmployee.as_view () metódus, amely elküldi az összes adatot és a alkalmazottak táblázatot a sablonfájlba.

URL-ek.py

# Adminisztrációs modul importálása
djangótól.közreműködés import admin
# Útvonal importálása és modul hozzáadása
djangótól.URL import útvonal, tartalmazza
# SearchEmployee modul importálása
a filterapp-ból.nézetek importálja a SearchEmployee-t
urlpatterns = [
# Adja meg az admin elérési útját
elérési út ('admin /', admin.webhely.URL-ek),
# Határozza meg a keresés útját
elérési út ('searchEmp /', SearchEmployee.as_view ()),
]

A következő kimenet anélkül jelenik meg, hogy bármilyen szűrést alkalmazna a következő URL-re.

http: // localhost: 8000 / SerachEmp

Az adatok szűrése egyszerű szűréssel

Adja hozzá a következő sort a nézetek.py fájl a alkalmazottak táblázat, ahol a post mezőKönyvelő".

# Alapszűrés alkalmazása
queryset = Alkalmazott.tárgyakat.szűrő (post = 'könyvelő')

Az alapszűrés alkalmazása után a következő kimenet jelenik meg.

Adatok szűrése több mezővel

Adja hozzá a következő sort a nézetek.py fájl a alkalmazottak táblázat, ahol a osztály mezőHT"és az email mező az '[email protected]'.

# Szűrés alkalmazása több mezővel
queryset = Alkalmazott.tárgyakat.szűrő (osztály = 'HR', e-mail = '[e-mail védett]')

A következő kimenet több szűrés alkalmazása után jelenik meg.

Adatok szűrése Q-objektummal

Adja hozzá a következő sort a nézetek.py fájl a alkalmazottak táblázat, ahol a post mezőMenedzservagy a osztály mezőÉrtékesítés".

# Használjon szűrést Q objektumok használatával
queryset = Alkalmazott.tárgyakat.szűrő (Q (post = 'Menedzser') | Q (osztály = 'Értékesítés'))

A következő kimenet jelenik meg a Q objektum szűrés alkalmazása után.

Az adatok szűrése a szűrőlánc használatával

Adja hozzá a következő sort a nézetek.py fájl a alkalmazottak táblázat, ahol a osztály mezőt először ellenőrizzük, és ha igaz értéket ad vissza, akkor a név mező be lesz jelölve.

# Láncolással alkalmazza a szűrést
queryset = Alkalmazott.tárgyakat.szűrő (osztály = 'HR').szűrő (név = 'Mehrab Hossain')

A következő kimenet jelenik meg a szűrőláncolás alkalmazása után.

Következtetés

Az adatok az alkalmazás követelményei alapján sokféleképpen szűrhetők Django-ban. A Django szűrés alapjainak megértése érdekében ebben az oktatóanyagban négyféle szűrési módszert ismertettek. Ezek egyszerű szűrés, többszörös szűrés, Q objektummal történő szűrés és szűrő láncolás.

Az AutoKey használata a Linux játékok automatizálásához
Az AutoKey egy asztali automatizáló segédprogram Linux és X11 rendszerekhez, Python 3, GTK és Qt programozással. A parancsfájlok és a MACRO funkcióina...
Az FPS-számláló megjelenítése a Linux-játékokban
A Linux játék komoly lendületet kapott, amikor a Valve 2012-ben bejelentette a Linux támogatását a Steam kliensnek és játékaiknak. Azóta sok AAA és in...
Sid Meier Civilization VI letöltése és lejátszása Linuxon
Bevezetés a játékba A Civilization 6 egy modern felvétel a Age of Empires játékok sorozatában bevezetett klasszikus koncepcióra. Az ötlet meglehetősen...