Skip to main content

Navigation system for django sites

Project description

Multiple navigation system for django sites.

Django Lineup lets you manage a tree of items. Each first level node represents a menu you can include in your templates.



The full documentation is at


Install Django Lineup:

pip install django-lineup

Add it to your INSTALLED_APPS:


Make sure the requests context processor is included (it is by default):

    'OPTIONS': {
      'context_processors': [

Render a menu::

{% load lineup_tags %}
{% lineup_menu 'my-root-item-slug '%}

Render the breadcrumbs::

{% load lineup_tags %}
{% lineup_breadcrumbs 'my-root-item-slug '%}

Import a menu from a json::

$ python import_menu_from_json

Json example::

  "label": "Main Menu",
  "slug": "main-menu",
  "order": 0,
  "children": [
      "label": "Tools",
      "slug": "tools",
      "order": 0,
      "children": [
          "label": "DNS Tools",
          "slug": "dns-tools",
          "order": 0,
          "login_required": true,
          "children": [
              "label": "DMARC DNS Tools",
              "slug": "dmarc-dns-tools",
              "link": "/dmarc-tools/",
              "title": "DMARC Rulez",
              "order": 0
          "label": "Password Generator",
          "slug": "password-generator",
          "order": 1
      "label": "Disabled Item",
      "slug": "disabled-item",
      "order": 1,
      "enabled": false,
      "children": [
          "label": "Disabled child",
          "slug": "disabled-child",
          "order": 0
      "label": "Perm Item",
      "slug": "perm-item",
      "order": 2,
      "permissions": [


  • Multiple menus supported
  • Visibility logic: login required / permissions
  • Render menu tree templatetags
  • Breadcrumbs templetetag
  • Import a menu from json management command
  • Django Baton integration to highlight different menu in the admin

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements_test.txt
(myenv) $ python

Development commands

pip install -r requirements_dev.txt
invoke -l

Example app

This example is provided as a convenience feature to allow potential users to try the app straight from the app repo without having to create a django project.

It can also be used to develop the app in place.

To run this example, follow these instructions:

  1. Navigate to the root directory of your application (same as

  2. Install the requirements for the package:

    pip install -r requirements_test.txt

  3. Make and apply migrations

    python makemigrations

    python migrate

  4. Run the server

    python runserver

  5. Access from the browser at

  6. Admin user account is admin:admin


Django Lineup is developed by Otto SRL.

Tools used in rendering this package:


0.3.0 (2021-04-27)

  • Adds the extras field

0.2.3 (2021-02-28)

  • Fixes tests

0.2.2 (2021-02-28)

  • Fixes baton row attributes method

0.2.1 (2020-12-14)

  • Adds order field as editable in change list page
  • First stable release

0.2.0 (2020-12-14)

  • First stable release

0.1.0 (2020-12-11)

  • First release on PyPI.

Project details

Download files

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

Files for django-lineup, version 0.3.0
Filename, size File type Python version Upload date Hashes
Filename, size django_lineup-0.3.0-py2.py3-none-any.whl (14.4 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size django-lineup-0.3.0.tar.gz (13.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page