Vereisten:
Voordat u het script van deze tutorial oefent, moet u de volgende taken uitvoeren:.
- Installeer de Django versie 3+ op Ubuntu 20+ (bij voorkeur)
- Een Django-project maken
- Voer de Django-server uit om te controleren of de server goed werkt of niet.
Een Django-app instellen:
Voer de volgende opdracht uit om een Django-app met de naam te maken vraagapp.
$ python3 beheren.py startapp-queryappVoer de volgende opdracht uit om de gebruiker te maken voor toegang tot de Django-database:. Als je de gebruiker eerder hebt gemaakt, hoef je de opdracht niet uit te voeren.
$ python3 beheren.py createsuperuserVoeg de app-naam toe aan de INSTALLED_APP deel van de instellingen.py het dossier.
INSTALLED_APPS = […
'queryapp'
]
Maak een map met de naam Sjablonen binnen in de vraagapp map en stel de Sjablonen locatie van de app in de SJABLONEN deel van de instellingen.py het dossier.
SJABLONEN = [… .
'DIRS': ['/home/fahmida/django_pro/queryapp/templates'],
… .
,
]
Maak een model voor de databasetabel:
Open de modellen.py bestand van de vraagapp map en voeg het volgende script toe om de structuur van te definiëren producten tafels. Product class is gedefinieerd om een tabel te maken met de naam producten met naam, type, merk, en prijs velden. Hier, naam, type, en merk velden zullen karaktergegevens opslaan, en de prijs veld zal de integer-gegevens opslaan.
modellen.py
# Importeer modellen modulevan django.db-importmodellen
# Definieer klasse om een producttabel te maken
klasse Product (modellen).Model):
naam = modellen.CharField(max_length=100)
type = modellen.CharField(max_length=30)
merk = modellen.CharField(max_length=50)
prijs = modellen.IntegerVeld()
Voer de ... uit migraties opdracht om een nieuwe migratie te maken op basis van de wijzigingen die door de modellen zijn aangebracht.
$ python3 beheren.py makemigrations query-appVoer de ... uit migreren commando om de SQL-commando's uit te voeren en alle tabellen in de database te maken die zijn gedefinieerd in de modellen.py het dossier.
$ python3 beheren.py migrerenWijzig de inhoud van de beheerder.py bestand met de volgende inhoud:. Hier, de productklasse van de modellens wordt geregistreerd met behulp van de registreren() methode om de . weer te geven producten tabellen in het Django-beheerdashboard.
beheerder.py
# Beheermodule importerenvan django.bijdrage import beheerder
# Productmodel importeren
van .modellen importeren Product:
# Registreer Productmodel
beheerder.website.registreren(Product)
Maak een sjabloonbestand met de naam product lijst.html binnen in de queryapp/sjablonen/ met het volgende script. Dit script toont alle gegevens van producten tabel in tabelvorm met een zoekvak. De gebruiker kan de specifieke records uit de producttabel zoeken met behulp van het zoekformulier. voor lus wordt in het script gebruikt om de gegevens te herhalen die zijn doorgegeven van de keer bekeken.py het dossier.
product lijst.html
Django QuerySet-zelfstudie
Product zoeken
ID kaart | Naam | Merk | Prijs |
---|---|---|---|
Product.ID kaart | Product.naam | Product.merk | style="text-align:right">$product.prijs |
Wijzig de inhoud van de keer bekeken.py bestand met het volgende script. De model- en sjabloonnamen worden gedefinieerd in de Product lijst klasse. get_queryset() methode van de klasse is gedefinieerd in het script om de gegevens te filteren op basis van de inhoud die is ingediend door het zoekvak van de sjabloon. Product.voorwerpen.alle() methode retourneert alle records van de producten tafel. verzoek.KRIJGEN.sleutels() methode wordt in het script gebruikt om te controleren of er gegevens zijn ingediend door het zoekformulier. Als deze methode terugkeert waar, dan de verzoek.KRIJGEN.krijg('src') methode wordt gebruikt om te controleren of de ingediende waarde leeg is of niet. Als deze methode een niet-lege waarde retourneert, wordt de waarde opgeslagen in de variabele, trefwoord, en het zal worden gebruikt voor het filteren van de gegevens op basis van de merk en type velden uit de producten tafel.
keer bekeken.py
# Lijstweergave-module importerenvan django.keer bekeken.generieke import ListView
# Productmodule importeren
van .modellen importeren Product:
# Q-module importeren
van django.db.modellen importeren Q
# Definieer klasse voor het opvragen van gegevens
klasse ProductList (ListView):
# Definieer model
model = product
# Definieer sjabloon
template_name = 'productLijst'.html'
def get_queryset(zelf):
# Stel de standaardqueryset in
queryset = Product.voorwerpen.alle()
# Controleer of de formulierwaarde is ingediend of niet
als zelf.verzoek.KRIJGEN.sleutels():
# Controleer het zoekwoord
als zelf.verzoek.KRIJGEN.krijg('src') != ":
trefwoord = zelf.verzoek.KRIJGEN.krijg('src')
# Stel de zoekopdrachtset in op basis van zoekwoord
queryset = Product.voorwerpen.filter(Q(merk=zoekwoord).hoofdletter()) | Q(type=zoekwoord).hoofdletter()))
retourqueryset
Wijzig de inhoud van de URL's.py bestand met het volgende script. In het script staat de 'zoekenPro/' pad is gedefinieerd om de . aan te roepen Product lijst.as_view() methode die alle gegevens en de gefilterde gegevens van de producten tabel naar het sjabloonbestand.
URL's.py
# Beheermodule importerenvan django.bijdrage import beheerder
# Pad importeren en module opnemen
van django.URL-importpad
# Importeer SearchEmployee-module
van queryapp.weergaven importeren ProductLijst
urlpatronen = [
# Definieer het pad voor admin
pad('admin/', beheerder.website.URL's),
# Definieer het pad om product te zoeken
path('searchPro/', ProductList.as_view()),
Voeg records toe aan de tabel:
Open de Django-beheerpagina en voeg enkele records toe aan de producten tabel om de queryset op dan toe te passen. Hier zijn vijf records ingevoegd.
Alle records van de producten met het zoekvak worden in de browser weergegeven na het uitvoeren van de volgende URL:.
http://localhost:8000/searchPro
Alle shampooproducten die worden weergegeven als het producttype, 'shampoo' wordt gezocht in het zoekvak.
De melkpoederproducten van de frisse merk wordt weergegeven als het productmerk, 'vers' wordt gezocht in het zoekvak.
Conclusie:
De manier om de gegevens van een eenvoudige databasetabel te filteren met behulp van een queryset, wordt uitgelegd in deze tutorial. De gegevens kunnen op verschillende manieren worden gefilterd. De lezers zullen na het lezen van deze tutorial begrijpen dat ze een queryset gebruiken om gegevens in de browser te filteren of te doorzoeken.