Skip to main content

The best and simplest way to highlight active links in your Django app.

Project description

https://badge.fury.io/py/django-active-link.svg Updates https://travis-ci.org/valerymelou/django-active-link.svg?branch=master https://codecov.io/gh/valerymelou/django-active-link/branch/master/graph/badge.svg

The simplest way to highlight active links in your Django app.

Documentation

The full documentation is at https://django-active-link.readthedocs.io.

Quick start

Install Django Active Link:

pip install django-active-link

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'active_link',
    ...
)

To use the active_link template tag you need to load active_link_tags templatetags library:

{% load active_link_tags %}

To add an active CSS class to a link when the request path matches a given view just do something like this.

<a href="{% url 'view-name' %}" class="{% active_link 'view-name' %}">Menu item</a>

You can even add the active class when the request path matches multiple views. Just pass the view names separated by a double pipe (||) as first argument to the active_link tag.

<a href="{% url 'view-name' %}" class="{% active_link 'view-name || view-sub-name' %}">Menu Item</a>

You can also use a custom CSS class:

<a href="{% url 'view-name' %}" class="{% active_link 'view-name' 'custom-class' %}">Menu item</a>

or:

<a href="{% url 'view-name' %}" class="{% active_link 'view-name' css_class='custom-class' %}">Menu item</a>

You can also define an inactive custom css class, that is triggered when a link is deemed not active:

<a href="{% url 'view-name' %}" class="{% active_link 'view-name' 'custom-class' 'not-active' %}">Menu item</a>

or:

<a href="{% url 'view-name' %}" class="{% active_link 'view-name' css_class='custom-class' css_inactive_class='not-active' %}">Menu item</a>

By default active_link will not perform a strict match. If you want to add the active class only in case of a strict match pass the strict argument to the tag:

<a href="{% url 'view-name' %}" class="{% active_link strict=True %}">Menu item</a>

Replace view-name with the name of your view (including namespaces).

Settings

You can override the default active class and strict mode with the settings ACTIVE_LINK_CSS_CLASS, ACTIVE_LINK_CSS_INACTIVE_CLASS and ACTIVE_LINK_STRICT.

Key

Description

Default Value

ACTIVE_LINK_CSS_CLASS

Active class to use.

active

ACTIVE_LINK_CSS_INACTIVE_CLASS

Inactive class to use.

ACTIVE_LINK_STRICT

Designates whether to perform a strict match or not.

False

For more usage examples, please check the full documentation at https://django-active-link.readthedocs.io.

IMPORTANT: Django Active Link requires that the current request object is available in your template’s context. This means you must be using a RequestContext when rendering your template, and django.template.context_processors.request must be in your TEMPLATE_CONTEXT_PROCESSORS setting. See https://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext for more information.

TODO

  • Write the documentation

  • Clean repository for unneccesary files

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install poetry
(myenv) $ poetry install --only test
(myenv) $ poetry run tox

Credits

Tools used in rendering this package:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_active_link-0.2.2.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

django_active_link-0.2.2-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page