Skip to main content

Easy to use active url highlighting for django

Project description

Info:

Easy to use active url highlighting for django

https://api.travis-ci.org/hellysmile/django-activeurl.png

live demo is available on heroku

Features

  • Automatic highlighting currently active <a> tags with css

  • Automatic highlighting up-level <a> tags for your menus

  • Removes boring stuff from your life!

Usage

in your templates you need:

{% load activeurl %}

then:

{% activeurl %}
    <ul>
        <li>
            <a href="/some_page/">
                some_page
            </a>
        </li>
        <li>
            <a href="/another_page/">
                another_page
            </a>
        </li>
    </ul>
{% endactiveurl %}

will be rendered into:

<ul>
    <li class="active">
        <a href="/some_page/">
            some_page
        </a>
    </li>
    <li>
        <a href="/another_page/">
            another_page
        </a>
    </li>
</ul>

if your yor current request.get_full_path() starts with /some_page/

html tags inside {% activeurl %}{% endactiveurl %} must have valid root tag, like <ul> or <div>, etc - otherwise they will be wrapped into <div>

starts with logic decided for appling “active” status for up-level <a> in your menus/submenus

Installation

install the stable version using pip:

pip install django-activeurl

install the in-development version using pip:

pip install -e git+git://github.com/hellysmile/django-activeurl#egg=django_activeurl-dev

modify your settings.py:

add 'django-activeurl' to your INSTALLED_APPS

add 'django.core.context_processors.request' to your TEMPLATE_CONTEXT_PROCESSORS

like this:

INSTALLED_APPS = (
    ...
    'django-activeurl',
    ...
)

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'django.core.context_processors.request',
    ...
)

Quick start

for successful lxml building you need to install some system stuff eg:

Ubuntu

sudo apt-get install libxml2 libxml2-dev libxslt-dev build-essential python-dev
sudo ldconfig

Fedora

sudo yum groupinstall 'Development Tools'
sudo yum install libxslt-devel libxml2 libxml2-devel python-devel
sudo ldconfig

Windows

pre build lxml binary you can find here

Cloud

99.99% thats lxml will build out from the box

Keep in mind, if your distro/os provides executable python with python3 (like Archlinux) you may check installation and addition instructions

ready to use example

git clone https://github.com/hellysmile/django-activeurl.git
cd django-activeurl
virtualenv env
source env/bin/activate
cd example
pip install -r dev_requirements.txt
python manage.py syncdb
python manage.py migrate
python manage.py runserver

then open http://127.0.0.1:8000/pages/page1/ in your favorite web-browser

Configuration and performance

in additional to {% activeurl %} you can add keyword parameters css_class and parent_tag, which means css class which will be added to parent element of <a>, is these case it is <li>

example:

{% activeurl css_class="current" parent_tag="li" %}
    <ul>
        <li>
            <a href="/some_page/">
                some_page
            </a>
        </li>
    </ul>
{% endactiveurl %}

will be rendered into:

<ul>
    <li class="current">
        <a href="/some_page/">
            some_page
        </a>
    </li>
</ul>

by default these values are:

{% activeurl css_class="active" parent_tag="li" %}

there is no rebuilding HTML inside template tag when no “active” urls found

by default CACHE_ACTIVE_URL is True, so before building HTML tree, searching “active” urls, django-activeurl will try to get previously rendered HTML from your cache backend

You can disable caching in your settngs.py:

CACHE_ACTIVE_URL = False

addition you can set CACHE_ACTIVE_URL_TIMEOUT which is timeout for cache key to expire

default value is:

CACHE_ACTIVE_URL_TIMEOUT = 60 * 60 * 24 # 1 day

and the last one configurable option is CACHE_ACTIVE_URL_PREFIX which is by defaults django_activeurl. - its cache key prefix, for skipping issues with similar keys in your backend

Tests

git clone https://github.com/hellysmile/django-activeurl.git
cd django-activeurl
virtualenv env
source env/bin/activate
pip install -r test_requirements.txt
python setup.py nosetests

Background

for building HTML element tree django-activeurl uses lxml, which is one of the best HTML parsing tools,more info and benchmarks can be found at habrahabr.ru (in russian)

Additional

I will make python 3 port after django 1.5 stable will be released, as soon as possible

Python 3.x, Django 1.5 status

initializr is used for html template

fork me button

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-activeurl-0.0.3.tar.gz (9.7 kB view details)

Uploaded Source

File details

Details for the file django-activeurl-0.0.3.tar.gz.

File metadata

File hashes

Hashes for django-activeurl-0.0.3.tar.gz
Algorithm Hash digest
SHA256 8c2979b294d4c9c80d3db7be42232ff0f87fe55737ab8785950a9d04329969ab
MD5 d2e09d56e0343dbabad32ec41a73ac9b
BLAKE2b-256 17cc13cec310e1f1fc83769354b2f3b6f4806cc6e01f8eae411a7d1ade526eca

See more details on using hashes here.

Supported by

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