python / expert
Snippet
Benutzerdefinierter URL-Pfadkonverter für kommagetrennte Ganzzahl-Arrays
Djangos Pfadkonverter-Architektur ermöglicht die explizite Umwandlung von URL-Parametern in Python-Datentypen vor der View-Ausführung. Durch Definieren von Regex-Mustern und bidirektionalen Transformationsmethoden (to_python und to_url) werden kommagetrennte Parameter direkt in der Routing-Schicht sicher als Ganzzahl-Listen dekodiert.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
from django.urls import register_converterclass IntArrayConverter:regex = r'\d+(,\d+)*'def to_python(self, value: str) -> list[int]:return [int(item) for item in value.split(',')]def to_url(self, value: list[int]) -> str:return ','.join(map(str, value))register_converter(IntArrayConverter, 'int_array')
django
Erklärung
1
from django.urls import register_converter
Importiert die Django-Routing-Funktion zur Registrierung benutzerdefinierter Pfadkonverter.
2
class IntArrayConverter:
Deklariert eine Klasse, die die Schnittstellenspezifikation für Django-Pfadkonverter erfüllt.
3
regex = r'\d+(,\d+)*'
Definiert den regulären Ausdruck für kommagetrennte Zahlenketten.
4
def to_python(self, value: str) -> list[int]:
Wandelt die eingehende URL-Parameter-Zeichenkette in eine Liste von Ganzzahlen um.
5
return [int(item) for item in value.split(',')]
Trennt den String an Kommas und wandelt jedes Element per List Comprehension um.
6
def to_url(self, value: list[int]) -> str:
Serialisiert eine Liste von Ganzzahlen zurück in einen kommagetrennten String für Reverse-URL-Lookups.
7
return ','.join(map(str, value))
Konvertiert Listenelemente in Strings und verbindet sie mit Kommas.
8
register_converter(IntArrayConverter, 'int_array')
Registriert den Konverter unter einem Alias-Namen für die Verwendung in URL-Pattern.