Skip to main content

Smart navigation tabs for Django Admin

Project description

Django Admin Tabs

A Django admin extension that adds smart navigation tabs to help you quickly switch between recently visited admin pages.

Zero Configuration Required - Just add to INSTALLED_APPS and it works!

Features

  • Zero Configuration - Works out of the box with just INSTALLED_APPS setup
  • Smart Tab Navigation - Automatically maintains a tab bar of your recent admin pages
  • Quick Page Switching - Click any tab to instantly jump to that page
  • Close Tabs - Remove individual tabs with a click
  • Persistent Tabs - Your tabs survive page refreshes (stored in browser)
  • Theme Compatible - Automatically adapts to Django Admin's color scheme
  • Custom Theme Support - Works with django-admin-interface, django-jazzmin, etc.
  • Configurable - Optional settings for customization

Requirements

  • Python 3.8+
  • Django 3.2+

Installation

pip install django-nav-toolbar

Or install from source:

pip install git+https://github.com/lazyjean/django-nav-toolbar.git

Usage

1. Add to INSTALLED_APPS

Important: Place nav_toolbar before django.contrib.admin in INSTALLED_APPS:

INSTALLED_APPS = [
    'nav_toolbar',       # Must come BEFORE django.contrib.admin
    'django.contrib.admin',
    # ... your other apps
]

2. Collect Static Files

python manage.py collectstatic

3. Run Your Project

python manage.py runserver

Navigate to Django admin, and you'll see the tabs bar at the top of the page!

How It Works

As you navigate through different admin pages, Django Admin Tabs automatically maintains a tab bar showing your recent pages. This allows you to:

  • Quickly switch between different admin sections without using the back button
  • Keep context of where you've been working
  • Access previous pages with a single click

The tabs are automatically managed based on your navigation patterns.

Configuration (Optional)

All settings are optional. The package works with zero configuration.

Available Settings

Add to your settings.py:

DJANGO_ADMIN_TABS = {
    'MAX_ITEMS': 20,              # Maximum number of tabs to maintain
    'STORAGE_KEY': 'admin_tabs',  # Browser storage key prefix
}

Configuration Options

Option Default Description
MAX_ITEMS 20 Maximum number of tabs to display
STORAGE_KEY 'admin_tabs' Prefix for browser storage

Technical Details

Template Override Mechanism

This package uses Django's template loading order to automatically extend admin templates:

  1. Django's app_directories template loader searches apps in INSTALLED_APPS order
  2. By placing nav_toolbar before django.contrib.admin, its template is found first
  3. The package's template extends admin/base.html and injects CSS/JS automatically

This approach ensures compatibility with:

  • Standard Django Admin
  • django-admin-interface
  • django-jazzmin
  • django-admin-numeric-filter
  • Any other admin theme that extends admin/base.html

Styling

The package uses Django Admin's CSS variables to automatically match your admin theme:

  • --primary - Primary color for active tabs
  • --body-bg - Background color
  • --body-fg - Text color
  • --border-color - Border color
  • --header-link-color - Active tab text color

If you have a custom admin theme with these CSS variables defined, the tabs will automatically match your theme.

Troubleshooting

Tabs not showing

  1. Check INSTALLED_APPS order: Ensure nav_toolbar comes before django.contrib.admin
  2. Run collectstatic: Make sure static files are collected
  3. Clear browser cache: Hard refresh the admin page (Ctrl+F5 or Cmd+Shift+R)

Warning about INSTALLED_APPS order

If you see a warning like:

UserWarning: nav_toolbar should be placed BEFORE django.contrib.admin...

Simply reorder your INSTALLED_APPS as shown in the Usage section above.

Development

Setup

# Clone the repository
git clone https://github.com/lazyjean/nav_toolbar.git
cd nav_toolbar

# Install in development mode
pip install -e .

# Run the example project
cd example
python manage.py migrate
python manage.py runserver

Code Quality

# Linting
ruff check nav_toolbar/

# Formatting
ruff format nav_toolbar/

Testing

# Run tests
python -m pytest

# Or with Django's test runner
python manage.py test

License

MIT License - see LICENSE for details.

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_nav_toolbar-0.1.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_nav_toolbar-0.1.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file django_nav_toolbar-0.1.0.tar.gz.

File metadata

  • Download URL: django_nav_toolbar-0.1.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for django_nav_toolbar-0.1.0.tar.gz
Algorithm Hash digest
SHA256 dee3a83545a421fae215cad041816f5a2e7285bc2dbb80390413f727325e1d5d
MD5 ceff9e8088dec2251e8ed25f641b5f19
BLAKE2b-256 694878ae95788a780c7202a95b0a6da7341b725bc574bde4a8f6e228bd0ddfd6

See more details on using hashes here.

File details

Details for the file django_nav_toolbar-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_nav_toolbar-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 634f0ea9046c7abae4126737cefe905bb0e3a949d9ef042ca3405dffd44cb9d5
MD5 d47535cf05b51e9fc57a3a57007e5d9a
BLAKE2b-256 9a9cb9c81eaa8e98ee0aa01a13592aac393ef3a8d0ca7c827e31fd4df769eda4

See more details on using hashes here.

Supported by

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