django-treenav 2.0.0

Creator: codyrutscher

Last updated:

Add to Cart

Description:

djangotreenav 2.0.0

Build Status

master:


develop:




An extensible, hierarchical, and pluggable navigation system for Django sites.
django-treenav was designed from the start to live independent of a CMS
implementation. As a separate application, treenav can easily be integrated
into existing, custom setups and does not enforce or require users to use a
particular content management system.
Sharing the same principles,
django-pagelets
integrates seamlessly with treenav and can be used together to create a flexible
CMS product.
For complete documentation checkout, http://django-treenav.readthedocs.org

Features

Generic functionality with multiple URL specifications: get_absolute_url(), reverse(), or raw URLs
Packaged with templates to render the tree hierarchy with nested <ul>’s, but can easily be overridden with custom templates
Easily customize each item’s template or fall back to a default menuitem.html
Useful CSS classes for flexible UI customization
Automatically sets “active” on item and item’s parents if PATH_INFO is equal to item.href
Efficient: minimizes database access with django-mptt functionality
Caches the tree so that repeated page views do not hit the database.
Simple links in the MenuItem list view for refreshing the cache and href
from the database.



Requirements

django >= 2.2
django-mptt >= 0.11.0



Using the demo
For a quick demo, follow these steps:

Create a virtualenv. (This example uses mkvirtualenv, but there are many other
ways to do it):
$ mkvirtualenv django-treenav

Check out the code and install the requirements:
(django-treenav)$ git clone git://github.com/caktus/django-treenav.git
(django-treenav)$ cd django-treenav/
(django-treenav)~/django-treenav/$ pip install -Ur dev-requirements.txt

Run migrations and create a superuser so you can login to the Django admin:
(django-treenav)~/django-treenav$ python manage.py migrate
(django-treenav)~/django-treenav$ python manage.py createsuperuser

Run the server:
(django-treenav)~/django-treenav$ python manage.py runserver

Visit http://localhost:8000/ in your browser and follow the instructions.



Installation

Install the app with pip:
pip install django-treenav

Add to your INSTALLED_APPS and run migrate:
INSTALLED_APPS = (
...,
'mptt',
'treenav',
)

Include these context processors:
TEMPLATES = [
{
'OPTIONS': {
'context_processors': [
"django.template.context_processors.request",
"treenav.context_processors.treenav_active",
],
},
},
]

Add these urls:
urlpatterns = [
url(r'^treenav/', include('treenav.urls')),
]




Maintainer Information
We use Github Actions to lint (using pre-commit, black, isort, and flake8),
test (using tox and tox-gh-actions), calculate coverage (using coverage), and build
documentation (using sphinx).
We have a local script to do these actions locally, named maintain.sh:
$ ./maintain.sh
A Github Action workflow also builds and pushes a new package to PyPI whenever a new
Release is created in Github. This uses a project-specific PyPI token, as described in
the PyPI documentation here. That token has been
saved in the PYPI_PASSWORD settings for this repo, but has not been saved anywhere
else so if it is needed for any reason, the current one should be deleted and a new one
generated.
As always, be sure to bump the version in treenav/__init__.py before creating a
Release, so that the proper version gets pushed to PyPI.
Development sponsored by Caktus Consulting Group, LLC.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.