python / intermediate
Snippet
Benutzerdefinierte Template-Filter-Funktion zur Verarbeitung von Listen-Elementen
Benutzerdefinierte Django-Template-Filter sind Python-Funktionen, die über `template.Library().filter` registriert werden. Dieses Beispiel zeigt List Comprehensions und Zeichenkettenverarbeitung innerhalb einer Filterfunktion, um Schlüsselwörter in Template-Strings dynamisch hervorzuheben.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
from django import templateregister = template.Library()@register.filter(name="highlight_keywords")def highlight_keywords(text: str, keywords_csv: str) -> str:if not text or not keywords_csv:return textkeywords = [kw.strip() for kw in keywords_csv.split(",") if kw.strip()]for kw in keywords:text = text.replace(kw, f"<strong>{kw}</strong>")return text
django
Erklärung
1
register = template.Library()
Erstellt die Template-Bibliotheks-Instanz zur Registrierung eigener Tags und Filter.
2
@register.filter(name="highlight_keywords")
Dekorator, der die Funktion als Template-Filter namens highlight_keywords registriert.
3
def highlight_keywords(text: str, keywords_csv: str) -> str:
Definiert die Filterfunktion mit Typannotationen für Text und Argumente.
4
keywords = [kw.strip() for kw in keywords_csv.split(",") if kw.strip()]
Nutzt eine List Comprehension zum Aufteilen, Trimmen und Filtern von Schlüsselwörtern.
5
for kw in keywords:
Iteriert durch das bereinigte Schlüsselwort-Array, um Treffer in HTML-Tags einzuschließen.