Djangos Template-System ermöglicht benutzerdefinierte Template Tags und Filter zur Erweiterung seiner Fähigkeiten. Benutzerdefinierte Filter transformieren Template-Variablen vor dem Rendern mit dem @register.filter Dekorator. Inclusion Tags rendern Template-Partials mit Kontextdaten mit @register.inclusion_tag für wiederverwendbare Komponenten wie Pagination. Simple Tags stellen Utility-Funktionen bereit, die überall in Templates mit @register.simple_tag zugänglich sind. Alle benutzerdefinierten Tags müssen in Templates via {% load custom_tags %} geladen werden.
from django import templatefrom django.utils.safestring import mark_saferegister = template.Library()@register.filter(name='truncate_words_middle')def truncate_words_middle(text, num_words):words = text.split()if len(words) <= num_words:return textstart = words[:num_words//2]end = words[-num_words//2:]return ' '.join(start) + '...' + ' '.join(end)@register.inclusion_tag('components/pagination.html')def render_pagination(page_obj, request_get_param='page'):return {'page_obj': page_obj,'request_get_param': request_get_param}@register.simple_tagdef get_range(start, end, step=1):return list(range(start, end, step))