Condiții preliminare:
Înainte de a practica scriptul acestui tutorial, trebuie să finalizați următoarele sarcini.
- Instalați versiunea Django 3+ pe Ubuntu 20+ (de preferință)
- Creați un proiect Django
- Rulați serverul Django pentru a verifica dacă serverul funcționează corect sau nu.
Configurați o aplicație Django:
Rulați următoarea comandă pentru a crea o aplicație Django numită queryapp.
$ python3 gestionează.py startapp queryappRulați următoarea comandă pentru a crea utilizatorul pentru accesarea bazei de date Django. Dacă ați creat utilizatorul anterior, atunci nu este nevoie să executați comanda.
$ python3 gestionează.py creează superutilizatorAdăugați numele aplicației în INSTALLED_APP parte a setări.py fişier.
INSTALLED_APPS = [..
„queryapp”
]
Creați un folder numit șabloane în interiorul queryapp folder și setați fișierul șablon locația aplicației în Șabloane parte a setări.py fişier.
TEMPLATES = [.. .
„DIRS”: ['/ home / fahmida / django_pro / queryapp / templates'],
.. .
,
]
Creați un model pentru tabelul bazei de date:
Deschide modele.py fișier din queryapp folder și adăugați următorul script pentru a defini structura produse Mese. Produs clasa este definită pentru a crea un tabel numit produse cu numele, tipul, marca, și Preț câmpuri. Aici, nume, tip, și marca câmpurile vor stoca date despre caractere și Preț câmpul va stoca datele întregi.
modele.py
# Modulul Importa modeledin django.modele de import db
# Definiți clasa pentru a crea tabelul de produse
clasa Produs (modele.Model):
nume = modele.CharField (max_length = 100)
tip = modele.CharField (max_length = 30)
marca = modele.CharField (max_length = 50)
pret = modele.IntegerField ()
Rulați makemigrări comanda pentru a crea o nouă migrare pe baza modificărilor făcute de modele.
$ python3 gestionează.py makemigrations queryappRulați migra pentru a executa comenzile SQL și a crea toate tabelele din baza de date care sunt definite în modele.py fişier.
$ python3 gestionează.py migreazăModificați conținutul fișierului admin.py fișier cu următorul conținut. Aici, clasa produsului modelelors este înregistrat utilizând Inregistreaza-te() metoda de afișare a produse tabele în tabloul de bord al administrației Django.
admin.py
# Importați modulul de administraredin django.admin import import
# Importați modelul produsului
din .modele import Produs
# Înregistrați modelul produsului
admin.site.înregistrare (Produs)
Creați un fișier șablon numit lista de produse.html în interiorul queryapp / șabloane / cu următorul script. Acest script va afișa toate datele din produse tabel sub formă de tabel cu o casetă de căutare. Utilizatorul va putea căuta înregistrările particulare din tabelul de produse utilizând formularul de căutare. pentru bucla este utilizată în script pentru a itera datele transmise de vederi.py fişier.
lista de produse.html
Tutorial Django QuerySet
Căutarea produsului
ID | Nume | Marca | Preț |
---|---|---|---|
produs.id | produs.Nume | produs.marca | style = "text-align: right"> $ produs.Preț |
Modificați conținutul fișierului vederi.py fișier cu următorul script. Numele modelului și șablonului sunt definite în Lista de produse clasă. get_queryset () metoda clasei este definită în script pentru a filtra datele pe baza conținutului trimis de caseta de căutare a șablonului. Produs.obiecte.toate() metoda returnează toate înregistrările fișierului produse masa. cerere.OBȚINE.chei () metoda este utilizată în script pentru a verifica dacă datele sunt trimise prin formularul de căutare. Dacă această metodă revine Adevărat, apoi cerere.OBȚINE.get ('src') metoda este utilizată pentru a verifica dacă valoarea trimisă este goală sau nu. Dacă această metodă returnează o valoare care nu este goală, atunci valoarea va fi stocată în variabilă, cuvânt cheie, și va fi utilizat pentru filtrarea datelor pe baza fișierului marca și tip câmpuri din produse masa.
vederi.py
# Importați modulul ListViewdin django.vederi.import generic ListView
# Modulul Importați produsul
din .modele import Produs
# Importați modulul Q
din django.db.modele import Q
# Definiți clasa pentru interogarea datelor
clasă ProductList (ListView):
# Definiți modelul
model = Produs
# Definiți șablonul
template_name = 'ProductList.html '
def get_queryset (self):
# Setați setul de interogare implicit
queryset = Produs.obiecte.toate()
# Verificați dacă valoarea formularului este trimisă sau nu
dacă eul.cerere.OBȚINE.tastele ():
# Verificați cuvântul cheie de căutare
dacă eul.cerere.OBȚINE.get ('src') != ":
cuvânt cheie = sine.cerere.OBȚINE.get ('src')
# Setați setul de interogări pe baza cuvântului cheie de căutare
queryset = Produs.obiecte.filtru (Q (marca = cuvânt cheie.capitalizați ()) | Q (tip = cuvânt cheie.valorifica()))
returnează setul de căutare
Modificați conținutul fișierului urluri.py fișier cu următorul script. În scenariu, „searchPro/ 'calea este definită pentru a apela Lista de produse.as_view () metoda care va trimite toate datele și datele filtrate ale produse tabel la fișierul șablon.
urluri.py
# Importați modulul de administraredin django.admin import import
# Importați calea și includeți modulul
din django.calea de import a adreselor URL
# Importați modulul SearchEmployee
din queryapp.vizualizări import ProductList
urlpatterns = [
# Definiți calea pentru administrator
cale ('admin /', admin.site.urluri),
# Definiți calea către produsul de căutare
cale ('searchPro /', ProductList.as_view ()),
Adăugați înregistrări în tabel:
Deschideți pagina de administrare Django și adăugați câteva înregistrări în produse tabel pentru a aplica setul queryset pe atunci. Aici au fost inserate cinci înregistrări.
Toate înregistrările produselor cu caseta de căutare vor fi afișate în browser după executarea următoarei adrese URL.
http: // localhost: 8000 / searchPro
Toate produsele de șampon afișate dacă tipul de produs, "şampon'va fi căutat în caseta de căutare.
Produsele din lapte praf de proaspătul marca va fi afișată dacă marca produsului, 'proaspăt'va fi căutat în caseta de căutare.
Concluzie:
Modul de filtrare a datelor dintr-un tabel simplu de baze de date utilizând queryset a explicat în acest tutorial. Datele pot fi filtrate în diferite moduri. Cititorii vor înțelege utilizarea unui queryset pentru a filtra sau căuta date în browser după ce a citit acest tutorial.