Date Tags Django

Dans un template utilisé tout au long de son site, tel un menu, je voulais trouver un moyen de savoir quelle vue l'avait appelé afin de positionner une classe CSS 'active' au bon endroit.

Dans mes recherches j'ai trouvé A Django template tag for the current active page, où au début j'avais le me cheminement consistant à parser request.path, ensuite j'ai mis la main sur une amélioration de la proposition précédente sur ce blog... que j'ai à mon tour modifié ;)

Voici ce que ça donne dans un template :

{% url 'base' as home %}
{% url 'profiles_profile_detail' request.user.username as profiles_profile_detail %}
{% url 'relationship_list' request.user.username 'friends' as relationship_list_friends %}              


     {% trans "Home" %}
     {{ request.user.username }}
     {% trans "My network" %}
     {% trans "log out" %}                        

Mon grin de sel se situe coté HTML où je ne veux pas laisser dans la page HTML des propriétés vides comme on le voit ici

Du coup je retourne bêtement class="active" plutôt que active

@register.simple_tag
def active(request, pattern):
    import re
    pattern = "^%s$" % pattern
    if re.search(pattern, request.path):
        return ' class="active" '
    return ''

Comments

comments powered by Disqus