Skip to main content

Gaston

A django menu generator.

CSS Classes

Menu

A depth-{{ depth_count }} CSS class is added to every <ul>, indicating its depth, 0-indexed.

Submenu

Gaston automatically adds the following CSS classes to your MenuItem elements:

class description
active If the current URL exactly matches the MenuItem's URL
selected If the current URL contains the MenuItem's url
If any submenu MenuItem's url exatly matches the current URL

Menu Items

Gaston defines a MenuItem class. Each MenuItem accepts the following parameters:

Parameter Decsription
label The label to be displayed.
url The URL of the menu item.
css_classes Additional CSS classes for the specific element.
submenu A list of MenuItem that will be rendered as a nested <ul>.

Available tempaltetags

Gaston provides the following templatetags:

tag description
menu Renders a given menu.
get_item_css_classes Returns a string with the item's CSS classes.

Usage

Installation

  • install django-gaston

  • Add gaston to your INSTALLED_APPS in settings.py:

INSTALLED_APPS = [
    ...
    "gaston",
    ...
]

Definitions

  • Define a menus.py with your menu layout:
from django.urls import reverse

from gaston.menu import MenuItem

about_menu = [
    MenuItem("Company", url=reverse("company")),
    MenuItem("FAQ", url=reverse("faq")),
]

main_menu = [
    MenuItem("Home", url=reverse("home")),
    MenuItem("About", url=reverse("about"), css_classes="with-submenu", submenu=about_menu),
]
  • Define a context processor inside an app (e.g. PROJECT_NAME/context_processors.py):
from .menus import main_menu


def menus(request):
    return {
        "main_menu": main_menu,
    }
  • Add the above context processor in your list of context processors (in settings.py):
TEMPLATES = [
    {
        ...
        "OPTIONS": {
            "context_processors": [
                ...
                "APP_NAME.context_processors.menus",
            ],
        },
    },
]

Where APP_NAME is the name of the app where you defined your menus.py.

Templates

Finally, load gaston_tags inside your template and call it as follows:

{% load gaston_tags %}

<nav>{% menu main_menu %}</nav>

Where main_menu is the key from your context processor dictionary.

Build and Publish

Build

In the root folder run:

python3 setup.py sdist bdist_wheel

This will create a folder named dist with the code ready to be published to pypi.

Publish to PYPI

Install twine with pipx by running

pipx install twine

Run the command bellow to publish the package

twine upload dist/*

Username and Password will be asked. For username, use __token__ and for password the token that was generated in the PYPI site.

Release files for django-gaston 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-gaston 0.4.1
File Size Uploaded
django-gaston-0.4.1.tar.gz 4.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-gaston 0.4.1
File Interpreter ABI Platform
django_gaston-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 8.9 kB

Release files / django-gaston-0.4.1.tar.gz

Download URL django-gaston-0.4.1.tar.gz
Size 4.1 kB
Tags Source
SHA-256 checksum
How to use checksums
99443b2429786bf78a624f0b44ae5eded85c8b5decdb3d0c5b31f32602cf478c
BLAKE2b-256 checksum
How to use checksums
e57c98fc5160a41de52aa8f3b774d1a55ffa1ce2c09114e396d5d122cba2ac57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.0

Release files / django_gaston-0.4.1-py3-none-any.whl

Download URL django_gaston-0.4.1-py3-none-any.whl
Size 4.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a8144618c3a08f2c308c5d75275d05946bd77070c29a501da4f2894fe3f7d2cd
BLAKE2b-256 checksum
How to use checksums
096d63b3ef02b78d1a0fad50c4c05d027e74d39f782132dc700ca0fdaad3a786
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.0

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page