Marcar active pagina actual en templates

Crear en la app core un directorio template_tags con su __init__.py. Crear el archivo core_tags.py y añadir:

from django.template import Library
from django.urls import reverse

register = Library()


@register.simple_tag
def active_link(request, urlconf_name):
    """Devolvera active si request.path coincide con
    reverse(urlconf_name), en caso contrario devolvera ''.
    """
    url_reverse = reverse(urlconf_name)
    if request.path == url_reverse:
        return 'active'
    return ''

Para usarlo en el template, en el link que se quiere comprobar:

<li class="{% active_link request 'home_page' %}">
  <a href="{% url 'home_page' %}">Home</a>
</li>

Nombre de la tag active_link, el objeto request y el nombre en URLConf completo, igual que se hace en un link {% url 'home:index' %}.