Skip to main content

Django generic view breadcrumbs

Project description

django-view-breadcrumbs Build Status Codacy Badge PyPI version

This extends django-bootstrap-breadcrumbs providing generic breadcrumb mixin classes.

Requires adding {% breadcrumb $label $viewname [*args] [**kwargs] %} to only the base template.

Screenshot

In the base.html template simply add the render_breadcrumbs tag and any template that inherits the base should have breadcrumbs included. i.e

base.html

{% load django_bootstrap_breadcrumbs %}

{% block breadcrumbs %}
    {% render_breadcrumbs %}
{% endblock %}

And your create.html.

{% extends 'base.html' %}

Breadcrumb mixin classes provided.

  • BaseBreadcrumbMixin - Base view requires a crumbs class property.
  • CreateBreadcrumbMixin - For create views Home \ Posts \ Add Post
  • DetailBreadcrumbMixin - For detail views Home \ Posts \ Post 1
  • ListBreadcrumbMixin - For list views Home \ Posts
  • UpdateBreadcrumbMixin - For Update views Home \ Posts \ Post 1 \ Update Post 1

Installation:

$ pip install django-view-breadcrumbs

Add app to your INSTALLED_APPS

INSTALLED_APPS = [
    ...
    'django_bootstrap_breadcrumbs',
    'view_breadcrumbs',
    ...
]

Usage:

django-view-breadcrumbs includes generic mixins that can be added to a class based view.

Using the generic breadcrumb mixin each breadcrumb will be added to the view dynamically and can be overridden by providing a crumbs property.

Sample crumbs: Home \ Posts \ Test - Post

NOTE: All url config should use a pattern view_name=model_verbose_name_{action} i.e view_name=post_detail for detail view.

Actions include:

  • "list" - ListView
  • "change" - UpdateView
  • "detail" - DetailView

In your urls.py

  urlpatterns = [
      ...
      path('posts/<slug:slug>', views.PostDetail.as_view(), name='post_detail'),
      ...
  ]

views.py

from django.views.generic import DetailView
from view_breadcrumbs import DetailBreadcrumbMixin


class PostDetail(DetailBreadcrumbMixin, DetailView):
    model = Post
    template_name = 'app/post/detail.html'

All crumbs use the home root path \ as the base this can be excluded by specifying add_home = False

Sample crumbs: Posts

from django.views.generic import ListView
from view_breadcrumbs import ListBreadcrumbMixin


class PostList(ListBreadcrumbMixin, ListView):
    model = Post
    template_name = 'app/post/list.html'
    add_home = False

Can also override the view breadcrumb by specifying a list of tuples [(Label, view path)].

Custom crumbs: Home \ My Test Breadcrumb

URL conf.

urlpatterns = [
   path('my-test-list-view/', views.TestView.as_view(), name='test_list_view'),
   path('my-test-detail-view/<int:pk>/', views.TestView.as_view(), name='test_detail_view'),
]

views.py

from django.urls import reverse
from django.views.generic import ListView
from view_breadcrumbs import ListBreadcrumbMixin


class TestView(ListBreadcrumbMixin, ListView):
    model = TestModel
    template_name = 'app/test/test-list.html'
    crumbs = [('My Test Breadcrumb', reverse('test_list_view'))]  # OR reverse_lazy

OR

class TestView(ListBreadcrumbMixin, ListView):
    model = TestModel
    template_name = 'app/test/test-list.html'

    @cached_property
    def crumbs(self):
        return super(TestView, self).crumbs + [
            (self.object.name , reverse('test_detail_view', kwargs={'pk': self.object.pk})
        ]

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-view-breadcrumbs-0.0.8.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

django_view_breadcrumbs-0.0.8-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file django-view-breadcrumbs-0.0.8.tar.gz.

File metadata

  • Download URL: django-view-breadcrumbs-0.0.8.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.4

File hashes

Hashes for django-view-breadcrumbs-0.0.8.tar.gz
Algorithm Hash digest
SHA256 b14f72e02b63eb13db8fafb713d391b3da30950e789ed8a3f7909b6da362fb6d
MD5 a50dff47f0c0816a7b43c9e79cc82d00
BLAKE2b-256 38eaa57aa9278cb8b4324e99702b279224afe0582755c1aaa48d43695c122f37

See more details on using hashes here.

File details

Details for the file django_view_breadcrumbs-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: django_view_breadcrumbs-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 9.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.4

File hashes

Hashes for django_view_breadcrumbs-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 3e49da298b29ada235c2b989f4982fe87290dc1422678c0b8d9136aba78c2f17
MD5 f346b1bfbfe950310fdf73bcbc2580d9
BLAKE2b-256 a3a63385c8d0dbd86fd2e9a300042e4f0a6a1f9c06662fa350a736e93d1b75ad

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