ulvaer.no

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.

Forsiden