Flask Academy · leksjon

Egendefinerte validatorer og feltfeil

Skriv regler og vis meldinger til brukerne.

Leksjon 4 av 413 trinn

Egendefinerte validatorer og feltfeil er en gratis leksjon i Flask Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Flask Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Flask Academy inneholder totalt 4 leksjoner.

Utover de innebygde

Innebygde validatorer dekker det grunnleggende, men virkelige apper har unike regler. Nå skal De skrive egendefinerte validatorer og vise tydelige feil. ✍️

Husk standardsettet

De kjenner allerede DataRequired, Length og Email. Egendefinerte regler legges oppå disse for logikk biblioteket ikke kan gjette.

from wtforms.validators import DataRequired, Length, Email

Innebygd i validators

En egendefinert validator er ganske enkelt en funksjon i feltets validators-liste. Den mottar skjemaet og feltet ved hver kontroll.

def not_admin(form, field):
    pass

name = StringField('Name', validators=[not_admin])

Utløs ValidationError

For å avvise en verdi utløser De ValidationError med en melding. WTForms fanger den opp og knytter teksten til feltet.

from wtforms.validators import ValidationError

def not_admin(form, field):
    if field.data == 'admin':
        raise ValidationError('Name is reserved.')

Konvensjonen validate_

For en regel som gjelder ett felt legger De til en metode kalt validate_fieldname i skjemaklassen. WTForms kaller den automatisk.

class SignupForm(FlaskForm):
    username = StringField('Username')

    def validate_username(self, field):
        if len(field.data) < 3:
            raise ValidationError('Too short.')

Valider mot databasen

Disse metodene kan kjøre hvilken som helst kode, så kontroller databasen for å avvise et brukernavn som allerede er tatt.

def validate_email(self, field):
    if User.query.filter_by(email=field.data).first():
        raise ValidationError('Email already used.')

Feil havner på feltet

Hver feilmelding legges i field.errors, en enkel liste. En tom liste betyr at feltet ble godkjent uten problemer.

form.username.errors  # ['Too short.']

Vis feil i malen

Gå gjennom feilene til et felt i Jinja for å vise dem. Brukerne ser nøyaktig hva de må rette, rett ved siden av inndatafeltet.

{% for error in form.username.errors %}
  <span class="err">{{ error }}</span>
{% endfor %}

Alle feil samtidig

Bruk form.errors for å lage et sammendrag. Det kobler hvert feltnavn til listen over meldinger etter at valideringen er kjørt.

form.errors  # {'username': ['Too short.']}

Gjenbrukbare validator-klasser

For regler De gjenbruker, skriver De en klasse med en __call__-metode. Konfigurer den én gang, og legg den deretter til i mange felt.

class NoSpaces:
    def __call__(self, form, field):
        if ' ' in field.data:
            raise ValidationError('No spaces allowed.')

Hold meldingene nyttige

Gode feilmeldinger forteller brukeren hvordan problemet kan løses, ikke bare at noe er galt. Tydelighet bygger tillit.

Rask kontroll

Hvordan avviser De en verdi inne i en egendefinert validatorfunksjon?

Oppsummering

De la til regler direkte, via validate_fieldname-metoder og gjenbrukbare klasser, utløste ValidationError og viste meldinger fra field.errors. 🌟

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Egendefinerte validatorer og feltfeil» gratis?

Ja – hele teksten i «Egendefinerte validatorer og feltfeil» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Flask Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Flask Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Egendefinerte validatorer og feltfeil»?

Skriv regler og vis meldinger til brukerne. Du øver på Flask Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Flask Academy?

Ingen tidligere erfaring er nødvendig. Flask Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Egendefinerte validatorer og feltfeil»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Flask Academy-leksjonen?

Ja. Alle Flask Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Definer en FlaskForm-klasse
  2. Generer og send inn et skjema
  3. validate_on_submit og CSRF-tokener
  4. Egendefinerte validatorer og feltfeil
← Tilbake til Flask Academy