Mukautettu validointi clean-metodeilla
Lisää kenttä- ja lomaketason validointisäännöt
Mukautettu validointi clean-metodeilla on ilmainen Django Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Django Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Django Academy-kurssilla on yhteensä 4 oppituntia.
Sisäänrakennettujen sääntöjen lisäksi
Mallin kentät tarjoavat perustason tarkistukset, mutta oikeat sovellukset tarvitsevat mukautettuja sääntöjä. Django suorittaa omat clean-metodisi, jotta voit toteuttaa juuri haluamasi logiikan. 🧹
Kenttätason clean
Validoidaksesi yhden kentän lisää metodi nimeltä clean_fieldname. Django kutsuu sitä automaattisesti validoinnin aikana kyseiselle kentälle.
def clean_title(self):
title = self.cleaned_data["title"]
return titleArvon lukeminen cleaned_datasta
Nouda arvo clean-metodin sisällä cleaned_data-sanakirjasta. Tässä vaiheessa Django on jo muuntanut sen oikeanlaiseksi Python-tyypiksi puolestasi.
title = self.cleaned_data["title"]Hylkääminen poikkeuksella
Jos arvo rikkoo sääntöäsi, nosta ValidationError-poikkeus. Django käsittelee sen ja näyttää viestin lomakkeessa kyseisen kentän vieressä.
from django.core.exceptions import ValidationError
raise ValidationError("Title is too short.")Käytännön kenttätarkistus
Tässä hylkäämme alle viiden merkin pituiset otsikot. Huomaa, että sinun on lopuksi palautettava arvo, jotta se säilyy cleaned_data-sanakirjassa.
def clean_title(self):
title = self.cleaned_data["title"]
if len(title) < 5:
raise ValidationError("Too short.")
return titlePalauta arvo aina
clean_fieldname-metodin kultainen sääntö: palauta puhdistettu arvo. Jos unohdat tämän, kentän arvoksi tulee None, vaikka syöte olisi kelvollinen.
Lomaketason clean
Kun haluat vertailla kahta kenttää, ohita koko lomakkeen clean-metodi. Se suoritetaan, kun kaikkien kenttien tarkistukset ovat valmistuneet.
def clean(self):
cleaned = super().clean()
return cleanedKutsu super().clean() ensin
Aloita lomaketason clean-metodi kutsumalla super().clean()-metodia. Näin saat kenttätarkistuksista kootun kokonaisen cleaned_data-sanakirjan.
cleaned = super().clean()
start = cleaned.get("start")
end = cleaned.get("end")Kahden kentän vertaileminen
Nyt voit toteuttaa kenttien välisiä sääntöjä, kuten varmistaa, että end tulee start-arvon jälkeen. Nosta ValidationError, jos suhde on virheellinen.
if start and end and end < start:
raise ValidationError("End must be after start.")Virheiden liittäminen kenttään
Lomaketason clean-metodissa voit kohdistaa virheen yhteen kenttään add_error-metodilla. Viesti näkyy silloin suoraan kyseisen syöttökentän vieressä eikä yläreunassa.
self.add_error("end", "End must be after start.")Validoinnin järjestys
Django suorittaa ensin jokaisen clean_fieldname-metodin ja lomaketason clean-metodin viimeisenä. Kun tunnet järjestyksen, osaat sijoittaa kunkin säännön oikeaan paikkaan.
Pikatarkistus
Missä sellaisen säännön pitäisi olla, joka vertailee kahta kenttää?
Kertaus: mukautettu validointi
Hienosti tehty! Käytä clean_fieldname-metodia yksittäisiin kenttiin ja lomaketason clean-metodia kenttien välisiin sääntöihin. Hylkää arvo nostamalla ValidationError ja palauta puhdistetut arvot aina. 🎉
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Mukautettu validointi clean-metodeilla” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Django Academy-oppimispolun 3 oppituntia, myös oppitunnin “Mukautettu validointi clean-metodeilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Django Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Mukautettu validointi clean-metodeilla”?
Lisää kenttä- ja lomaketason validointisäännöt Harjoittelet Django Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Django Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Django Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Mukautettu validointi clean-metodeilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Django Academy-oppitunnilla?
Kyllä. Jokainen Django Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- ModelForm-määritys ja Meta.fields
- form.save() ja commit=False
- Mukautettu validointi clean-metodeilla
- Widgetit, otsikot ja ohjeteksti