python / intermediate
Snippet
Dynamischer Dateiendungs-Validator für benutzerdefinierte Django-Formulare
In Django-Formularen bieten clean_<feldname>() Methoden die Möglichkeit, benutzerdefinierte Validierungsregeln für einzelne Felder zu definieren. Hier wird die Dateiendung extrahiert und eine ValidationError ausgelöst, wenn der Dateityp nicht erlaubt ist.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from django import formsfrom django.core.exceptions import ValidationErrorclass DocumentUploadForm(forms.Form):allowed_extensions = ['.pdf', '.docx']file = forms.FileField()def clean_file(self):uploaded_file = self.cleaned_data.get('file')if uploaded_file:ext = uploaded_file.name.rsplit('.', 1)[-1].lower()if f".{ext}" not in self.allowed_extensions:raise ValidationError(f"Unsupported file type '.{ext}'. Must be PDF or DOCX.")return uploaded_file
django
Erklärung
1
from django import forms
Importiert das Django-Formularmodul zur Erstellung von Formularklassen.
2
def clean_file(self):
Definiert eine benutzerdefinierte Feldvalidierungsmethode speziell für das Feld 'file'.
3
uploaded_file = self.cleaned_data.get('file')
Ruft das bereinigte Dateiobjekt aus dem cleaned_data-Wörterbuch des Formulars ab.
4
ext = uploaded_file.name.rsplit('.', 1)[-1].lower()
Extrahiert die Dateiendung zuverlässig mittels rsplit und konvertiert sie in Kleinbuchstaben.
5
raise ValidationError(f"Unsupported file type '.{ext}'. Must be PDF or DOCX.")
Löst eine Django ValidationError aus, um die Formularverarbeitung zu unterbrechen und Fehlermeldungen bereitzustellen.