Vormi valideerimine on kõigi veebirakenduste jaoks väga oluline ülesanne kehtivate andmete sisestamiseks andmebaasi. Rakenduse kasutajad ei saa kehtetuid andmeid sisestada, kui vormi andmed on enne esitamist valideeritud. Django nimetatakse MVT (Model View Template) põhiseks raamistikuks, kus kontrolleri ülesande täidab see raamistik ise. Andmebaasiga seotud ülesanded teeb Model ja andmed esitatakse mallile View abil. Vormi väljad genereeritakse konkreetse mudeli põhjal, mis sisestab andmed pärast valideerimist Django andmebaasi. Ühe tüüpi valideerimise teeb brauser põhinedes mudelis määratletud välja tüübile. Kasutades on kehtiv() Funktsioon on veel üks viis vormi andmete kontrollimiseks, kas need on pärast vormi esitamist kehtivad või mitte. See õpetus näitab teile, kuidas andmeid pärast vormi kinnitamist Django andmebaasi sisestada.
Eeldused
Enne selle õpetuse skripti harjutamist peate täitma järgmised ülesanded:
- Installige Django versioon 3+ Ubuntu 20+ (eelistatult)
- Looge Django projekt
- Käivitage Django server, et kontrollida, kas server töötab korralikult või mitte.
Seadistage Django rakendus
1. Django nimelise rakenduse loomiseks käivitage järgmine käsk validationapp.
$ python3 hallata.py startapp validationapp2. Django andmebaasile juurdepääsemiseks kasutatava kasutaja loomiseks käivitage järgmine käsk. Kui olete kasutaja varem loonud, ei pea te käsku käivitama.
$ python3 hallata.py loob ülikasutaja3. Lisage rakenduse nimi rakendusse INSTALLED_APP osa py faili.
INSTALLED_APPS = […
'validationapp'
]
4. Looge kaust nimega mallid sees validationapp kaust ja määrake malli omad rakenduse asukoht MALLID osa py faili.
MALLID = [… .
'DIRS': ['/ home / fahmida / django_pro / validationapp / templates'],
… .
,
]
Django vormi kinnitamine
Djangos vormi kinnitamise ülesande kontrollimiseks peate kirjutama järgmiste failide koodi.
- mudelid.py
- admin.py
- vaated.py
- vormid.py
- klient.HTML
Looge mudel
Ava mudelid.py fail rakenduse kaustast ja faili struktuuri loomiseks lisage järgmine skript klientidele tabel. Tabelis on neli välja. Need on täisnimi, e-posti aadress, kontakti nr ja kliendi tüüp. Siin luuakse kliendi_tüüp valikutüübi järgi. See tähendab, et kasutaja peab rippmenüüst valima mis tahes väärtuse.
mudelid.py
# Mudelite importiminealates django.db impordimudelid
# Määratlege kliendi sisenemise klass
klassi klient (mudelid.Mudel):
# Määratlege kliendi tüübi väärtused
tüüp = (
(„tasuline“, „tasuline“),
("tasuta", "tasuta")
)
# Määratlege klienditabeli väljad
full_name = mudelid.CharField (max_pikkus = 50)
email = mudelid.EmailField ()
contact_no = mudelid.CharField (max_pikkus = 20)
klient_tüüp = mudelid.CharField (max_length = 32, valikud = type, vaikimisi = 'free')
Registreerige mudel
Lisage järgmine skript sisse admin.py faili registreerimiseks Klient mudelile Django andmebaasis klientidele tabel Django halduspaneelilt.
admin.py
# Impordi administraatori moodulalates django.kaastöö impordi admin
# Impordi kliendimudel
alates .mudelid impordivad klienti
# Registreerige kliendimudel
admin.sait.registreeru (klient)
Loo vormid.py rakenduse kausta sees ja lisage järgmine skript klassi määratlemiseks, et luua vorm, mis põhineb domeeni klient mudel.
vormid.py
# Vormimooduli importdjango impordivormidelt
# Importige kliendi mudel
alates validationapp.mudelid impordivad klienti
# Määratlege kliendivormi klass
klass ClientForm (vormid.ModelForm):
klassi Meta:
mudel = klient
väljad = ('täielik_nimi', 'e-post', 'kontakti nr', 'kliendi_tüüp')
Loo mall
Looge HTML-fail nimega klient.HTML järgmise skriptiga, et kuvada varem kujundatud vorm koos Salvesta nuppu.
klient.HTML
Kliendi sisestamise vorm
Sisestage andmed pärast vormi kinnitamist
Muutke sisu vaated.py fail järgmise skriptiga. AddCustomer () Funktsiooni kasutatakse skriptis uue kirje sisestamiseks klientidele tabel pärast vormi kinnitamist. Kui vormi ei esitata, laaditakse vorm kasutades klient.HTML faili. Kui vorm esitatakse koos kehtivate andmetega, lisatakse uus kirje, kasutades salvesta () funktsioon ja edukateade prinditakse brauserisse võimalusega lisada veel üks kirje.
vaated.py
# Impordi HttpResponse moodulalates django.http.vastuse importimine HttpResponse
# Impordi renderdamise moodul
alates django.otseteed impordi renderdamine
# Importige ClientForm
alates validationapp.vormid impordivad CustomerForm
# Defineeri funktsioon kliendi sisestuse lisamiseks
def AddCustomer (taotlus):
soovi korral.meetod == "POST":
vorm = CustomerForm (taotlus.POSTITAMINE)
# Kui vormi andmed on õiged või mitte
kui vorm.on kehtiv():
proovige:
# Salvestage vormi andmed andmebaasi
vormis.salvesta ()
# Määrake kasutajale sõnum
andmed = ['
Kliendi andmed on õigesti sisestatud.
Lisa veel üks']
# Tagastage vastus
tagastage HttpResponse (andmed)
välja arvatud:
üle andma
muu:
# Määrake vormi objekt
vorm = CustomerForm ()
# Kuva kliendi sisenemisvorm
return render (taotlus, 'klient.HTML ', ' vorm ': vorm)
Muutke URL-id.py Django projekti fail järgmise skriptiga. Skriptis on määratletud kaks rada. "klient /" Uute kliendikirjete lisamiseks kasutatakse vormi kuvamise teed. The 'admin /' rada kasutatakse Django administratsiooni juhtpaneeli kuvamiseks.
URL-id.py
# Impordi administraatori moodulalates django.kaastöö impordi admin
# Importimooduli import
alates django.URL-ide importimise tee
# Importivaade
valideerimisrakenduse impordivaadetest
# Määrake kliendi ja administraatori tee
urlpatterns = [
tee ('klient /', vaated.AddCustomer),
tee ('admin /', admin.sait.URL-id)
]
Käivitage Django server ja käivitage brauseris järgmine URL, et kuvada kliendi sisestusvorm. Kui Salvesta nuppu vajutatakse ilma vormi andmeid lisamata, siis ilmub järgmine leht, kus on tõrkeid kohustuslike väljade tühjaks jätmisel.
Kui meiliväljale on seatud valed andmed, kuvatakse järgmine tõrge.
Kui vorm esitatakse koos kehtivate andmetega, kuvatakse järgmine teave. Kui kasutaja klõpsab nuppuLisa veel üks' lingi korral kuvatakse vorm uuesti järgmise kirje andmete sisestamiseks.
Järeldus
Selles õpetuses näidati Django vormi kinnitamise viisi, luues lihtsa Django rakenduse. Nimetatud rakendus aitab Django arendajatel mõista vormide valideerimise tähtsust ja nad saaksid seda korralikult teha.