Filtry szablonów Django to funkcje przekształcające wartości podczas renderowania szablonu. Pytigon rozszerza standardowy zestaw filtrów Django o własną kolekcję, dostępną globalnie we wszystkich szablonach.
Pytigon rejestruje filtry szablonów przez standardowy mechanizm Django: utwórz katalog templatetags/ w swojej aplikacji z modułami filtrów. Pytigon wykryje je automatycznie podczas startu.
Wszystkie wbudowane filtry Django są dostępne w szablonach Pytigona:
{{ value|default:"nothing" }}
{{ name|lower }}
{{ list|join:", " }}
{{ text|truncatechars:100 }}
{{ date|date:"Y-m-d" }}
{{ count|pluralize }}
Pytigon dodaje kilka niestandardowych filtrów dla typowych wzorców aplikacji. Są zdefiniowane w pakietach pytigon_lib i pytigon i dostępne globalnie.
{{ "Hello"|translate }} — Przetłumacz używając systemu I18N Pytigona
{{ "Hello"|translate_to:"pl" }} — Przetłumacz na konkretny język
{{ field_name|field_title }} — Pobierz verbose name/tytuł pola modelu
{{ model_instance|model_name }} — Pobierz nazwę klasy modelu
{{ queryset|to_json }} — Serializuj QuerySet do JSON
{{ value|smart_float }} — Sformatuj float z separatorem zależnym od lokalizacji
{{ value|isinstance:"str" }} — Sprawdź typ Pythona (zwraca bool)
{{ value|getattr:"field_name" }} — Dostęp do atrybutu po nazwie tekstowej
{{ dict|get_item:"key" }} — Dostęp do elementu słownika po kluczu
Dodaj niestandardowe filtry do katalogu templatetags/ dowolnej aplikacji:
# [app]/templatetags/my_filters.py
from django import template
register = template.Library()
@register.filter(name='add_prefix')
def add_prefix(value, prefix):
"""Add a prefix to a string."""
return f"{prefix}{value}"
@register.filter(name='status_badge')
def status_badge(value):
"""Convert a status code to a Bootstrap badge HTML."""
badges = {
'active': '<span class="badge bg-success">Active</span>',
'pending': '<span class="badge bg-warning">Pending</span>',
'inactive': '<span class="badge bg-secondary">Inactive</span>',
}
return badges.get(value, value)
Użycie w szablonach:
{{ record.status|status_badge }}
{{ record.code|add_prefix:"ITEM-" }}
Filtry są wykrywane automatycznie. Bez konfiguracji — wystarczy dodać plik do właściwego katalogu.