Vérifier un champ
Fait partie de la section Formulaires du Journey Django de Coddy. Leçon 10 sur 20.
Le formulaire accepte des événements datés de l’année dernière. Les règles intégrées connaissent les types et les limites, mais pas votre site. Une règle personnalisée portant sur un champ se place dans une méthode nommée clean_ suivie du nom du champ. Voici un formulaire d’inscription qui réserve le nom admin au personnel :
class SignupForm(forms.Form):
username = forms.CharField(max_length=30)
def clean_username(self):
username = self.cleaned_data["username"]
if username.lower() == "admin":
raise forms.ValidationError("That name is reserved.")
return usernameis_valid() appelle cette méthode après les vérifications propres au champ ; la valeur est donc déjà convertie : un DateField fournit une date. Lever une forms.ValidationError rejette le champ, et le message apparaît en dessous.
La méthode doit return la valeur : ce qu’elle renvoie est placé dans cleaned_data. Sans le return, la valeur devient None.
Défi
FacileDans EventForm, refuse une date antérieure à aujourd’hui avec le message The date cannot be in the past. Une date d’aujourd’hui convient.
Appuie sur Exécuter et ajoute un événement daté d’hier.
Essayez vous-même
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
description = forms.CharField(widget=forms.Textarea, required=False)
capacity = forms.IntegerField(min_value=1)
Toutes les leçons de Formulaires
2Formulaires Django
Un formulaire DjangoCréer un formulaire3Formulaires de modèle
Un formulaire de modèleModifier un événementSupprimer un événementMessages de réussiteEntraînez-vous par vous-même : Playground Django