Maison > développement back-end > Tutoriel Python > Techniques de validation sur le terrain à Django

Techniques de validation sur le terrain à Django

Mary-Kate Olsen
Libérer: 2025-01-27 00:15:09
original
652 Les gens l'ont consulté

Techniques for Field Validation in Django

La vérification des données du formulaire Django est un lien clé pour le développement Web pour garantir que les données utilisateur collectées répondent aux besoins de l'application. Django fournit une variété de méthodes de vérification sur le terrain, qui expliquera progressivement cet article.

  1. Utiliser les paramètres de champ

Lors de la définition du champ de table Django, vous pouvez généralement spécifier les règles de vérification directement via les paramètres de champ.

Par exemple, assurez-vous que la longueur maximale du champ

est de 100 caractères. Puisqu'il est first_name, vous pouvez utiliser CharField Paramètres: max_length

<code class="language-python">from django import forms

class PersonalInfo(forms.Form):
    first_name = forms.CharField(max_length=100)</code>
Copier après la connexion
Il s'agit de l'une des méthodes de vérification les plus simples et les plus couramment utilisées.

  1. Utilisez le dispositif de vérification intégré

  2. Le dispositif de vérification intégré de Django est un objet appelable réutilisable pour effectuer des inspections de vérification spécifiques.

Supposons que la valeur minimale du champ

est de 18. Bien que les paramètres puissent être utilisés directement, comment utiliser le

: age min_value Le module MinValueValidator Django

fournit plusieurs vérifications pré-construites pour l'inspection minimale / maximale de valeur, la vérification de l'expression régulière et d'autres tâches.
<code class="language-python">from django import forms
from django.core.validators import MinValueValidator

class PersonalInfo(forms.Form):
    first_name = forms.CharField(max_length=100)
    age = forms.IntegerField(validators=[MinValueValidator(18)])</code>
Copier après la connexion

validators

Rédaction d'un dispositif de vérification personnalisé
  1. Parfois, une logique de vérification plus compliquée est nécessaire et le dispositif de vérification intégré ne peut pas être traité. Dans ce cas, vous pouvez écrire un dispositif de vérification personnalisé.
Le dispositif de vérification est un objet appelant. Par exemple, créez un dispositif de vérification pour assurer le nombre de nombres:

Astuce: ValidationError Afin de garder le code ordonné, vous pouvez envisager de mettre le périphérique de vérification personnalisé dans un fichier séparé, tel que

. Cela dépend de l'échelle du projet.
<code class="language-python">from django import forms
from django.core.exceptions import ValidationError
from django.core.validators import MinValueValidator

def validate_even(value):
    if value % 2 != 0:
        raise ValidationError(f"{value} 不是偶数")

class PersonalInfo(forms.Form):
    first_name = forms.CharField(max_length=100)
    age = forms.IntegerField(validators=[MinValueValidator(18)])
    even_field = forms.IntegerField(validators=[validate_even])</code>
Copier après la connexion

Utiliser Méthode validators.py

  1. Une autre méthode puissante de vérification de champ consiste à réécrire la méthode

    dans la classe de formulaire. Cette méthode est particulièrement adaptée à la logique de vérification spécifique à une seule forme. clean_<fieldname>()

    Par exemple, vérifiez le champ
  2. directement dans la forme:

clean_<fieldname>() Cette méthode peut accéder directement aux données de nettoyage du champ et permettre une vérification de contrôle plus détaillée.

even_field

Méthode
<code class="language-python">from django import forms
from django.core.exceptions import ValidationError
from django.core.validators import MinValueValidator

class PersonalInfo(forms.Form):
    first_name = forms.CharField(max_length=100)
    age = forms.IntegerField(validators=[MinValueValidator(18)])
    even_field = forms.IntegerField()

    def clean_even_field(self):
        even_field_validated = self.cleaned_data.get("even_field")
        if even_field_validated % 2 != 0:
            raise ValidationError(f"{even_field_validated} 不是偶数")
        return even_field_validated</code>
Copier après la connexion

    Parfois, la vérification doit prendre en compte la relation entre plusieurs champs sous la forme. Par exemple, s'il y a deux champs, il y a plus de caractères dans un champ qu'un autre champ. Ce type de vérification est
  1. Form -evel Verification

    , car il dépend de la valeur de plusieurs champs, pas seulement d'un seul champ. clean()

    Pour cette raison, vous pouvez réécrire la méthode
  2. dans la classe de formulaire.

En réécrivant la méthode , vous pouvez réaliser la logique logique personnalisée de l'ensemble du formulaire pour vous assurer que les données répondent aux exigences plus compliquées.

Résumé

django fournit des méthodes de vérification de formulaire multiples: clean()

  • Paramètres de champ: utilisez max_length ou min_value et d'autres paramètres pour une vérification simple.
  • Dispositif de vérification construit: Utilisez le dispositif de vérification prédéterminé de Django pour gérer le mode commun.
  • Dispositif de vérification personnalisé: objets appelables réutilisables écrits pour des règles de vérification complexes.
  • Méthode: réécrivez cette méthode pour la vérification de champ spécifique à haut niveau. clean_<fieldname>()
  • Méthode: utilisez cette méthode pour effectuer une vérification de niveau de forme impliquant plusieurs champs.
  • clean()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal