Custom template tags
26. mars 2026 12:13
Din informasjon rett i Djangos html templates.
Selv om Django kommer med mange innebygde funksjoner som {% if %}, {% for %} og {{ value }}, kan det være annen informasjon eller logikk du trenger rett inn i HTML-templaten, som en tag. Nå trenger jeg et tilfeldig tall (faktisk) som skal inn i HTML filen:
Filer og mapper skal se slik ut:
din_app/
│── templatetags/ <-- Må hete nøyaktig dette
│ │──__init__.py <-- Må være her (kan være tom)
│ └── mine_tags.py <-- Her skriver du koden din
└── views.py
Lag 2 filer:
din_app/templatetags/__init__.py din_app/templatetags/custom_filters.py
custom_filters.py ser slik ut:
import random
from django import template
register = template.Library()
@register.simple_tag
def tilfeldig1_100():
a = random.randint(1, 100)
return a
I html-templaten din legger du nå inn følgende:
{% load custom_filters %}
Nummeret er: {% tilfeldig1_100 %}
Teksten Nummeret er 80 vil vises i template når den åpnes.
Her er en forklaring på custom_filters.py:
import random -> Dette importerer bibliotek for tilfeldige tall.
from django import template -> Her hentes verktøy for mal-systemet.
register = template.Library() -> Lager og legger til en liste over nye funksjoner sånn at Django finner dem.
@register.simple_tag -> Den her gjør funksjoen tilgjengelig som en tag i html-templaten
def tilfeldig1_100(): -> Her definerer vi selve funksjonen.
a = random.randint(1, 100) -> Velger et heltall mellom 1 og 100 og lagrer i variabel a
return a -> Funksjonen "sender ut" det tallet som er produsert.