Django

Uporaba privzete vrednosti NULL v modelu Django

Uporaba privzete vrednosti NULL v modelu Django
Model je eden pomembnih delov aplikacije Django, ki temelji na zbirki podatkov. Model opredeljuje strukturo baze podatkov. Podatkovni tip tabele baze podatkov in način vstavljanja podatkov na podlagi različnih atributov sta opisana v modelu. Potrditev podatkov je mogoče nadzorovati tudi z uporabo modela. Vsaka tabela v zbirki podatkov vsebuje določeno število polj ali stolpcev. Model določa vrsto vsakega polja tabele. Privzeti atribut se v modelu uporablja za nastavitev privzete vrednosti za določeno območje, če uporabnik za to polje ne vstavi podatkov. Privzeta vrednost polja je lahko prazno ali katero koli določeno vrednost. The nič in prazno vrednosti niso enake. nič se uporablja za določanje, ali je prazna vrednost dovoljena ali ne za določeno polje. Če je nič je nastavljeno na Lažno, potem prazen niz ne bo dovoljen v polju s celoštevilskim vnosom, lahko pa je prazen niz dodeljen v polju z nizom. Če je nič je nastavljeno na Prav, potem bo v polju s celo številom namesto praznega niza dana vrednost NULL. blank se uporablja predvsem za preverjanje obrazca in ne preverja podatkovnega tipa polja. Način uporabe privzeto in nič atributi v modelu Django so prikazani v tej vadnici.

Pogoji:

Pred vadbo skripta te vaje morate opraviti naslednje naloge.

A. Namestite različico Django 3+ na Ubuntu 20+ (po možnosti)
B. Ustvarite projekt Django
C. Zaženite strežnik Django, da preverite, ali strežnik deluje pravilno ali ne.

Nastavite aplikacijo Django:

A. Zaženite naslednji ukaz, da ustvarite aplikacijo Django z imenom databaseapp.

$ python3 upravljanje.py startapp databaseapp

B. Zaženite naslednji ukaz, da ustvarite uporabnika za dostop do baze podatkov Django. Če ste uporabnika že izpolnili, ukaza ni treba zagnati.

$ python3 upravljanje.py ustvarja uporabnika

C. Dodajte ime aplikacije v INSTALLED_APP del nastavitev.datoteko.

INSTALLED_APPS = [
..
'validationapp'
]

D. Ustvarite mapo z imenom predloge znotraj databaseapp mapo in nastavite predloge lokacijo aplikacije v PREDLOGE del nastavitve.py mapa.

PREDLOGE = [

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

Model zasnove s privzetimi in ničelnimi atributi:

Spremenite modelov.py datoteko z naslednjim skriptom za ustvarjanje tabele z imenom izdelkov ki bo vseboval štiri polja brez polja id. Te imena, cena, datum izdelave in datum poteka. Vrednost nič atribut je za vsa polja nastavljen na True. Vrednost prazno atribut je nastavljen na True tudi za vsa polja. To pomeni, da lahko uporabnik obdrži polja prazna, preden odda obrazec, ki bo uporabil ta model. The privzeto Vrednost atributa je nastavljena za ceno, datum_izdelave in datum izteka.

modelov.py

# Uvoz modelov modula
iz djanga.db modeli uvoza
# Ustvari razred za določitev strukture tabele učiteljev
razred Izdelek (modeli.Model):
ime = modeli.CharField (max_length = 50, null = True, blank = True)
cena = modeli.IntegerField (null = True, privzeto = ", blank = True)
datum_izdelave = modeli.DateField (null = True, privzeto = '0000-00-00', blank = True)
expire_date = modeli.DateField (null = True, privzeto = '0000-00-00', blank = True)

Zaženite naslednje ukaze za selitev, da ustvarite potrebne datoteke za selitev in tabelo zbirke podatkov baze podatkov SQLite.

$ python3 upravljanje.py makemigrations databaseapp
$ python3 upravljanje.py selijo

Vstavljanje podatkov z nadzorno ploščo za upravljanje Django:

Spremenite vsebino skrbnik.py datoteko z naslednjim skriptom za registracijo modela v bazo podatkov.

skrbnik.py
Spremenite URL-ji.py datoteko z naslednjim skriptom, da določite pot do odpiranja nadzorne plošče Django.

URL-ji.py

# Uvozi skrbniški modul
iz djanga.prispevaj uvoz admin
# Uvoz modula poti
iz djanga.pot za uvoz URL-jev
# Določite pot za stranko in skrbnika
urlpatterns = [
pot ('admin /', admin.spletnem mestu.urls)
]

Zdaj zaženite strežnik Django in pojdite na skrbniško nadzorno ploščo Django z naslednjim URL-jem.

http: // localhist: 8000 / admin

s klikom odprite obrazec za vnos izdelka Dodajte izdelek. Če uporabnik predloži obrazec brez vstavljanja podatkov, se v brskalniku prikaže naslednji izhod. Tu sta dve datumski polji prikazani napaki, ker privzeta vrednost datumskega polja ni v veljavni obliki.

Naslednji izhod se bo prikazal po dodajanju veljavnih podatkov o datumu. Tukaj cena polje je prazno za uporabo privzetega atributa.

Vstavljanje podatkov s predlogo:

Način vstavljanja podatkov v izdelkov tabela z uporabo obrazca HTML je prikazana v tem razdelku. Tu bodo elementi obrazca ustvarjeni na podlagi predhodno ustvarjenega modela.

obrazci.py

# Uvozi modul obrazcev
iz obrazcev za uvoz django
# Uvozi model stranke
iz dbapp.modeli uvozijo izdelek
# Določite razred za obrazec stranke
razred ProductForm (obrazci.ModelForm):
razred Meta:
model = izdelek
polja = '__all__'

Ustvarite datoteko HTML z imenom izdelka.html znotraj predloge mapo aplikacije z naslednjim skriptom. Podatki obrazca bodo poslani, ko bo uporabnik kliknil na Shrani gumb.

izdelka.html

Obrazec za prijavo strank



% csrf_token%
oblika.kot_p

Spremenite pogledi.py datoteko z naslednjim skriptom za vstavljanje podatkov v izdelkov tabelo po potrditvi obrazca. AddProduct () je v skriptu definirana funkcija za preverjanje, ali je obrazec oddan ali ne, in če je obrazec oddan, bo preveril, ali so podatki obrazca veljavni ali neveljavni. Če is_valid () funkcija vrne prav, potem bodo podatki vstavljeni v izdelkov tabela, v brskalniku pa se prikaže sporočilo o uspehu.

pogledi.py

# Uvozi modul HttpResponse
iz djanga.http.odziv uvoz HttpResponse
# Uvozi modul upodabljanja
iz djanga.bližnjice uvoz upodabljajo
# Uvozi obrazec izdelka
iz dbapp.obrazci uvoz ProductForm
# Določite funkcijo za dodajanje izdelka
def AddProduct (zahteva):
če zahteva.metoda == "OBJAVI":
form = ProductForm (zahteva.OBJAVI)
# Če so podatki obrazca veljavni ali ne
če obrazec.is_valid ():
poskusite:
# Podatke obrazca shranite v bazo podatkov
oblika.shrani ()
# Določite sporočilo za uporabnika
podatki = ['

Dodan izdelek.

']
# Vrnite odgovor
vrni HttpResponse (podatki)
razen:
podajo
sicer:
# Določite objekt obrazca
form = ProductForm ()
# Pokažite obrazec za prijavo izdelka
vrnitev upodabljanja (zahteva, 'izdelek.html ', ' obrazec ': obrazec)

Spremenite URL-ji.py datoteko z naslednjim skriptom, da določite pot za klic funkcije pogleda.

URL-ji.py

# Uvozi skrbniški modul
iz djanga.prispevaj uvoz admin
# Uvoz modula poti
iz djanga.pot za uvoz URL-jev
# Uvozi pogled
iz pogledov uvoza dbapp
# Določite pot za stranko in skrbnika
urlpatterns = [
pot (", pogledi.AddProduct),
pot ('admin /', admin.spletnem mestu.urls)
]

Zdaj zaženite strežnik Django in v brskalniku odprite osnovni URL.

http: // localhist: 8000 /

Pojavil se bo naslednji obrazec.

Naslednji ValueError se prikaže, če uporabnik predloži obrazec brez dodajanja podatkov v obrazec. Tukaj cena polje je celo število, ki ne sme biti prazen niz.

Če uporabnik vnese veljavne podatke, kot je spodnji obrazec, in pritisne Shrani gumb, bo nov zapis izdelka vstavljen v bazo podatkov.

Naslednja slika se prikaže, če na novo vstavljeni zapis odprete z nadzorne plošče Django.

Zaključek:

Model je bil zasnovan z uporabo null in privzetih atributov v tej vadnici. Nato so tukaj prikazani načini vstavljanja podatkov v ta polja v zaledju in prednjem delu, da bralcu pomagajo poznati uporabo privzetih in ničelnih atributov v zbirki podatkov Django.

Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...
S temi brezplačnimi orodji dodajte gibe miške v sistem Windows 10
V zadnjih letih so se računalniki in operacijski sistemi močno razvili. Včasih so morali uporabniki uporabljati ukaze za krmarjenje po upraviteljih da...
Nadzirajte in upravljajte gibanje miške med več monitorji v sistemu Windows 10
Upravitelj miške z dvojnim zaslonom vam omogoča nadzor in konfiguriranje gibanja miške med več monitorji, tako da upočasni gibanje blizu meje. Windows...