Krajta

Jak filtrovat data v Django?

Jak filtrovat data v Django?
Je velmi běžným požadavkem, aby webová aplikace zobrazovala data na webové stránce na základě zájmu uživatele. Díky vyhledávací funkci je aplikace uživatelsky přívětivější.  Rámec Django má vestavěný filtr() metoda filtrování dat z databázových tabulek. Tabulka může obsahovat mnoho záznamů a někdy je na základě konkrétních kritérií nutné určit některá konkrétní data. Tento úkol je snazší používat filtr () metoda různými způsoby. V tomto tutoriálu bude popsáno, jak lze data z databázové tabulky filtrovat pomocí metody filtrování čtyřmi různými způsoby.

Předpoklady

Před procvičením příkladů tohoto tutoriálu musíte dokončit následující úkoly:

  1. Nainstalujte Django verze 3+ na Ubuntu 20+ (nejlépe)
  2. Vytvořte projekt Django
  3. Spusťte server Django a zkontrolujte, zda server funguje správně nebo ne.

Nainstalujte si aplikaci Django

A. Spuštěním následujícího příkazu vytvořte aplikaci Django s názvem filterapp.

$ python3 spravovat.py startapp filterapp

B. Spuštěním následujícího příkazu vytvořte uživatele pro přístup k databázi Django. Pokud jste uživatele vytvořili dříve, nemusíte tento příkaz spouštět.

$ python3 spravovat.py vytvoří superuživatele

C. Přidejte název aplikace do INSTALLED_APP část py soubor.

INSTALLED_APPS = [

'filterapp'
]

D. Vytvořte složku s názvem šablony uvnitř filterapp složku a nastavte šablony umístění aplikace v ŠABLONY část py soubor.

TEMPLATES = [

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

Vytvořte model pro tabulku databáze

Otevři modely.py soubor z filterapp složku a přidejte následující skript k definování struktury zaměstnanci tabulky. Zaměstnanec třída je definována pro vytvoření tabulky s názvem zaměstnanci s jméno, pošta, e-mail, oddělení, a datum připojení pole. Tady, jméno, příspěvek, a oddělení pole budou ukládat znaková data, e-mailem do pole se uloží e-mailová adresa a datum připojení pole uloží data data.

modely.py

# Modul importu modelů
od djanga.db modely importu
# Definujte třídu pro vytvoření tabulky zaměstnanců
třída Zaměstnanec (modely.Modelka):
name = modely.CharField (max_length = 50)
post = modely.CharField (max_length = 40)
email = modely.EmailField ()
oddělení = modely.CharField (max_length = 30)
joinning_date = modely.DateField ()

Spusťte makemigrace příkaz k vytvoření nové migrace na základě změn provedených modely.

$ python3 spravovat.py makemigrations filterapp

Spusťte migrovat příkaz k provedení příkazů SQL a vytvoření všech tabulek v databázi, které jsou definovány v modely.py soubor.

$ python3 spravovat.py migrovat

Upravit obsah souboru admin.py soubor s následujícím obsahem. Tady, zaměstnanec třída modelů je registrována pomocí registrace() způsob zobrazení evidence zaměstnanců tabulky na řídicím panelu správy Django.

admin.py

# Importovat modul správce
od djanga.contrib import admin
# Importovat model zaměstnance
z .import modelů Zaměstnanec
# Zaregistrujte model zaměstnance
admin.stránky.registrace (zaměstnanec)

Spuštěním následující adresy URL otevřete přihlašovací stránku správce Django. Zadejte platné uživatelské jméno a heslo pro otevření Řídicí panel správy Django pro přístup k databázovým tabulkám.

Chcete-li použít filtr na data, vložte dva nebo více záznamů zaměstnanců. Zde je vloženo pět záznamů.

Vytvořte Vyhledávání.html soubor uvnitř filterapp / templates / složka s následujícím skriptem. Data z zaměstnanec tabulka se zobrazí v tomto souboru šablony. pro smyčka se používá ke čtení obsahu souboru seznam_objektů proměnná, která bude předána ze souboru zobrazení. The jméno, příspěvek, a oddělení hodnoty zaměstnanci tabulka se zobrazí pomocí seznamu.

Vyhledávání.html

<br>Výukový program pro filtr Django<br>

Seznam zaměstnanců



    % pro emp v seznamu_objektů%

  1. emp.název (emp.pošta )


    emp.oddělení oddělení



  2. % endfor%

Otevři pohledy.py soubor z filterapp složku a upravte obsah souboru pomocí následujícího skriptu. Názvy modelů a šablon jsou definovány ve skriptu.

pohledy.py

# Import modulu ListView
od djanga.pohledy.obecný import ListView
# Importovat modul zaměstnanců
z .import modelů Zaměstnanec
# Import Q modulu
od djanga.db.import modelů Q
# Definujte třídu pro filtrování dat
třída SearchEmployee (ListView):
# Definujte model
model = zaměstnanec
# Definujte šablonu
template_name = 'hledat.html '

Upravit obsah souboru adresy URL.py soubor s následujícím obsahem. Ve scénáři sesearchEmp"cesta je definována pro volání Zaměstnanec ve vyhledávání.as_view () metoda, která odešle všechna data a filtrovaná data z zaměstnanci tabulku do souboru šablony.

adresy URL.py

# Importovat modul správce
od djanga.contrib import admin
# Importovat cestu a zahrnout modul
od djanga.cesta importu adres URL, zahrnout
# Importujte modul SearchEmployee
od filterapp.zobrazení importovat SearchEmployee
urlpatterns = [
# Definujte cestu pro administrátora
cesta ('admin /', admin.stránky.adresy URL),
# Definujte cestu pro vyhledávání
cesta ('searchEmp /', SearchEmployee.as_view ()),
]

Následující výstup se zobrazí bez použití jakéhokoli filtrování pro následující adresu URL.

http: // localhost: 8000 / SerachEmp

Filtrování dat jednoduchým filtrováním

Přidejte následující řádek na konec pohledy.py soubor pro filtrování záznamů zaměstnanci tabulka, kde je hodnota pošta pole je 'Účetní''.

# Použít základní filtrování
queryset = Zaměstnanec.předměty.filtr (příspěvek = 'Účetní')

Po použití základního filtrování se zobrazí následující výstup.

Filtrování dat pomocí více polí

Přidejte následující řádek na konec pohledy.py soubor pro filtrování záznamů zaměstnanci tabulka, kde je hodnota oddělení pole je 'HT' a e-mail pole je „[chráněno e-mailem]“.

# Použít filtrování s více poli
queryset = Zaměstnanec.předměty.filter (department = 'HR', email = '[email protected]')

Po použití vícenásobného filtrování se zobrazí následující výstup.

Filtrování dat pomocí Q Object

Přidejte následující řádek na konec pohledy.py soubor pro filtrování záznamů zaměstnanci tabulka, kde je hodnota pošta pole je 'Manažer"nebo hodnota oddělení pole je 'Odbyt''.

# Použijte filtrování pomocí Q objektů
queryset = Zaměstnanec.předměty.filter (Q (post = 'Manager') | Q (department = 'Sales')))

Po použití filtrování objektů Q se zobrazí následující výstup.

Filtrování dat pomocí řetězení filtrů

Přidejte následující řádek na konec pohledy.py soubor pro filtrování záznamů zaměstnanci tabulka, kde je hodnota oddělení pole bude nejprve zkontrolováno a pokud se vrátí true, pak hodnota název pole bude zaškrtnuto.

# Použijte filtrování zřetězením
queryset = Zaměstnanec.předměty.filtr (oddělení = 'HR').filtr (name = 'Mehrab Hossain')

Následující výstup se zobrazí po použití řetězení filtrů.

Závěr

Data lze v Django filtrovat mnoha způsoby na základě požadavků aplikace. V tomto tutoriálu byly vysvětleny čtyři různé způsoby filtrování, abychom pochopili základy filtrování Django. Jedná se o jednoduché filtrování, vícenásobné filtrování, filtrování pomocí objektu Q a filtrování řetězců.

Top 5 ergonomických produktů pro počítačové myši pro Linux
Způsobuje dlouhodobé používání počítače bolest zápěstí nebo prstů? Trpíte ztuhlými klouby a neustále si musíte třást ruce? Cítíte pálivou bolest pokaž...
Jak změnit nastavení myši a touchpadu pomocí Xinput v Linuxu
Většina linuxových distribucí je ve výchozím nastavení dodávána s knihovnou „libinput“ pro zpracování vstupních událostí v systému. Může zpracovávat v...
Přemapujte tlačítka myši odlišně pro jiný software pomocí ovládání myší X-Mouse
Možná potřebujete nástroj, který by mohl změnit ovládání myši u každé aplikace, kterou používáte. V takovém případě můžete vyzkoušet aplikaci s názvem...