Django

Gebruik van de standaardwaarde NULL in Django Model

Gebruik van de standaardwaarde NULL in Django Model
Model is een van de belangrijkste onderdelen van de database-gebaseerde Django-applicatie. Het model definieert de structuur van de database. Het gegevenstype van de databasetabel en de manier om gegevens in te voegen op basis van verschillende attributen worden beschreven in het Model. De gegevensvalidatie kan ook worden gecontroleerd door het model te gebruiken. Elke tabel in de database bevat een bepaald aantal velden of kolommen. Het model definieert het type van elk veld van de tabel. Het standaardkenmerk wordt in het model gebruikt om een ​​standaardwaarde voor een bepaald gebied in te stellen als de gebruiker voor dat veld geen gegevens invoegt. De standaardwaarde van een veld kan zijn blank of een specifieke waarde. De nul en blank waarden zijn niet hetzelfde. nul wordt gebruikt om te definiëren of de lege waarde wel of niet is toegestaan ​​voor een bepaald veld. Als de nul ingesteld op niet waar, dan is de lege string niet toegestaan ​​in het integer-getypt veld, maar de lege string kan worden toegewezen in het string-typed veld. Als de nul ingesteld op waar, dan wordt de NULL-waarde gegeven in het integer-getypte veld in plaats van een lege string. blank wordt voornamelijk gebruikt voor de formuliervalidatie en controleert niet het gegevenstype van het veld. De manier van gebruiken standaard en nul attributen in het Django-model heeft laten zien in deze tutorial.

Vereisten:

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

EEN. Installeer de Django versie 3+ op Ubuntu 20+ (bij voorkeur)
B. Een Django-project maken
C. Voer de Django-server uit om te controleren of de server correct werkt of niet.

Een Django-app instellen:

EEN. Voer de volgende opdracht uit om een ​​Django-app met de naam te maken databaseapp.

$ python3 beheren.py startapp databaseapp

B. Voer de volgende opdracht uit om de gebruiker te maken voor toegang tot de Django-database:. Als u de gebruiker eerder hebt voltooid, hoeft u de opdracht niet uit te voeren.

$ python3 beheren.py createsuperuser

C. Voeg de app-naam toe aan de INSTALLED_APP onderdeel van de instellingen.py-bestand.

INSTALLED_APPS = [

'validatieapp'
]

D. Maak een map met de naam Sjablonen binnen in de databaseapp 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/databaseapp/templates'],
… .
,
]

Ontwerpmodel met standaard- en null-attributen:

Wijzig de modellen.py bestand met het volgende script om een ​​tabel met de naam . te maken producten die vier velden zal bevatten zonder het id-veld. Deze namen, prijs, fabricagedatum en vervaldatum. De waarde van de nul attribuut is ingesteld op True voor alle velden. De waarde van de blanco attribuut is ook ingesteld op True voor alle velden. Dit betekent dat de gebruiker de velden leeg kan laten voordat hij het formulier indient dat dit model zal gebruiken. De standaard kenmerkwaarde is ingesteld voor de prijs, fabricagedatum en vervaldatum expire.

modellen.py

# Importeer modellen module
van django.db-importmodellen
# Maak een klas om de structuur van de lerarentabel te definiëren
klasse Product (modellen).Model):
naam = modellen.CharField(max_length=50, null=True, blank=True)
prijs = modellen.IntegerField(null=True, default=", blank=True)
fabricagedatum = modellen.DateField(null=True, default='0000-00-00', blank=True)
verlopen_datum = modellen.DateField(null=True, default='0000-00-00', blank=True)

Voer de volgende migratieopdrachten uit om de benodigde migratiebestanden en de databasetabel van de SQLite-database te maken:.

$ python3 beheren.py makemigrations database-app
$ python3 beheren.py migreren

Gegevens invoegen met behulp van Django Administration Dashboard:

Wijzig de inhoud van de beheerder.py bestand met het volgende script om het model in de database te registreren:.

beheerder.py
Wijzig de URL's.py bestand met het volgende script om het pad te definiëren om het Django-beheerdashboard te openen.

URL's.py

# Beheermodule importeren
van django.bijdrage import beheerder
# Padmodule importeren
van django.URL-importpad
# Definieer pad voor klant en beheerder
urlpatronen = [
pad('admin/', beheerder.website.URL's)
]

Voer nu de Django-server uit en ga naar het Django-beheerdashboard met behulp van de volgende URL:.

http://localhist:8000/admin

open het productinvoerformulier door te klikken op Product toevoegen. Als de gebruiker het formulier indient zonder gegevens in te voeren, verschijnt de volgende uitvoer in de browser:. Hier vertonen twee datumvelden fouten omdat de standaardwaarde van het datumveld geen geldig formaat heeft.

De volgende uitvoer verschijnt na het toevoegen van de geldige datumgegevens:. Hier de prijs veld is leeg voor gebruik van het standaardkenmerk.

Gegevens invoegen met behulp van de sjabloon:

De manier om gegevens in te voegen in de producten tabel met HTML-formulier is getoond in deze sectie. Hier worden de formulierelementen gegenereerd op basis van het eerder gemaakte model.

formulieren.py

# Formulierenmodule importeren
van django importformulieren
# Klantmodel importeren
van dbapp.modellen importeren Product:
# Definieer de klasse voor het klantformulier
klasse ProductForm (formulieren).Modelformulier):
klasse Meta:
model = product
velden = '__all__'

Maak het HTML-bestand met de naam Product.html binnen in de Sjablonen map van de app met het volgende script. De formuliergegevens worden verzonden wanneer de gebruiker op de . klikt Sparen knop.

Product.html

Invoerformulier klant



% csrf_token %
het formulier.as_p

Wijzig de keer bekeken.py bestand met het volgende script om gegevens in te voegen in de producten tabel na validatie van het formulier. Product toevoegen() functie is gedefinieerd in het script om te controleren of het formulier is ingediend of niet, en als het formulier is ingediend, zal het controleren of de formuliergegevens geldig of ongeldig zijn. Als is geldig() functie retourneert waar, dan worden de gegevens ingevoegd in de producten tabel, en een succesbericht wordt weergegeven in de browser.

keer bekeken.py

# Import HttpResponse-module
van django.http.reactie importeren HttpResponse
# Importeer rendermodule
van django.sneltoetsen import render
# Productformulier importeren
van dbapp.formulieren importeren ProductForm
# Definieer functie om productinvoer toe te voegen
def Product toevoegen(verzoek):
indien verzoek.methode == "POST":
formulier = ProductForm(verzoek).POST)
# Als de formuliergegevens geldig zijn of niet
als vorm.is geldig():
proberen:
# Sla de formuliergegevens op in de database
het formulier.sparen()
# Definieer het bericht voor de gebruiker
gegevens = ['

Het product toegevoegd.

']
# Retourneer het antwoord
retour HttpResponse(data)
behalve:
voorbij lopen
anders:
# Definieer het formulierobject
formulier = ProductForm()
# Toon het productinvoerformulier
return render(verzoek, 'product'.html', 'formulier': formulier)

Wijzig de URL's.py bestand met het volgende script om het pad te definiëren om de weergavefunctie aan te roepen.

URL's.py

# Beheermodule importeren
van django.bijdrage import beheerder
# Padmodule importeren
van django.URL-importpad
# Weergave importeren
van dbapp importweergaven
# Definieer pad voor klant en beheerder
urlpatronen = [
pad(", weergaven.Product toevoegen),
pad('admin/', beheerder.website.URL's)
]

Voer nu de Django-server uit en open de basis-URL in de browser.

http://localhist:8000/

Het volgende formulier verschijnt.

Het volgende WaardeFout verschijnt als de gebruiker het formulier indient zonder gegevens in het formulier toe te voegen. Hier de prijs veld is een geheel getal dat niet de lege tekenreeks kan zijn.

Als de gebruiker de geldige gegevens invoert zoals het onderstaande formulier en op de . drukt Sparen knop, wordt een nieuw productrecord in de database ingevoegd.

De volgende afbeelding verschijnt als u het nieuw ingevoegde record opent vanuit het Django-dashboard.

Conclusie:

Er is een model ontworpen met behulp van null- en standaardattributen in deze zelfstudie. Vervolgens zijn de manieren om gegevens in deze velden in te voegen in de back-end en de front-end hier getoond om de lezer te helpen het gebruik van standaard- en null-attributen in de Django-database te leren kennen.

Beste Linux-distributies voor gaming in 2021
Het Linux-besturingssysteem heeft een lange weg afgelegd van zijn oorspronkelijke, eenvoudige, servergebaseerde uiterlijk. Dit besturingssysteem is de...
Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...
Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...