Django

Queryset gebruiken in django

Queryset gebruiken in django
De meeste webapplicaties zijn nu geïmplementeerd met de database. queryset wordt gebruikt in de Django-toepassing om records op te halen door de databasetabel te filteren of te segmenteren of te ordenen zonder de oorspronkelijke gegevens te wijzigen. Het model gebruikte Django om de tabel in de database te maken. De kennis van het gebruik van het model in Django is dus nodig om het gebruik van queryset te begrijpen. De belangrijkste functie van de queryset is om de records van databasetabellen te herhalen door ze om te zetten in SQL-query's. Het kan worden gebruikt vanaf de python-opdrachtregel of door het python-script te schrijven om de uitvoer van de browser weer te geven. Het gebruik van queryset voor het op verschillende manieren ophalen van gegevens uit een databasetabel is uitgelegd in deze tutorial.

Vereisten:

Voordat u het script van deze tutorial oefent, moet u de volgende taken uitvoeren:.

  1. Installeer de Django versie 3+ op Ubuntu 20+ (bij voorkeur)
  2. Een Django-project maken
  3. 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-queryapp

Voer 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 createsuperuser

Voeg 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 module
van 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-app

Voer 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 migreren

Wijzig 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 importeren
van 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



<br>Django QuerySet-zelfstudie<br>



Product zoeken



% csrf_token %
Zoek product:







% voor product in object_list %



% eindvoor %
ID kaartNaamMerkPrijs
Product.ID kaart Product.naam Product.merkstyle="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 importeren
van 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 importeren
van 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.

Strijd om Wesnoth 1.13.6 Ontwikkeling vrijgegeven
Strijd om Wesnoth 1.13.6 die vorige maand werd uitgebracht, is de zesde ontwikkelingsrelease in de 1.13.x-serie en het levert een aantal verbeteringen...
Hoe League Of Legends op Ubuntu 14 te installeren.04
Als je fan bent van League of Legends, dan is dit een kans voor jou om League of Legends te testen. Merk op dat LOL wordt ondersteund op PlayOnLinux a...
Installeer de nieuwste OpenRA Strategy Game op Ubuntu Linux
OpenRA is een Libre/Free Real Time Strategy-game-engine die de vroege Westwood-games nabootst, zoals de klassieke Command & Conquer: Red Alert. Gedist...