Django Academy · Oppitunti

Mukautettu validointi clean-metodeilla

Lisää kenttä- ja lomaketason validointisäännöt

Oppitunti 3/413 vaihetta

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 title

Arvon 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 title

Palauta 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 cleaned

Kutsu 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. 🎉

Aloita maksutta

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

  1. ModelForm-määritys ja Meta.fields
  2. form.save() ja commit=False
  3. Mukautettu validointi clean-metodeilla
  4. Widgetit, otsikot ja ohjeteksti
← Takaisin: Django Academy