Metadata-Version: 2.1
Name: django-view-breadcrumbs
Version: 2.0.0
Summary: Django generic view breadcrumbs
Home-page: https://github.com/jackton1/django-view-breadcrumbs
Author: Tonye Jack
Author-email: jtonye@ymail.com
License: UNKNOWN
Description: # django-view-breadcrumbs 
        
        [![Build Status](https://travis-ci.org/tj-django/django-view-breadcrumbs.svg?branch=master)](https://travis-ci.org/tj-django/django-view-breadcrumbs) ![PyPI - Django Version](https://img.shields.io/pypi/djversions/django-view-breadcrumbs) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/django-view-breadcrumbs) [![Downloads](https://pepy.tech/badge/django-view-breadcrumbs)](https://pepy.tech/project/django-view-breadcrumbs)
        
        [![Codacy Badge](https://api.codacy.com/project/badge/Grade/6b447e364bef4988bda95bd0965bb4bc)](https://www.codacy.com/app/tj-django/django-view-breadcrumbs?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=tj-django/django-view-breadcrumbs&amp;utm_campaign=Badge_Grade) [![Codacy Badge](https://app.codacy.com/project/badge/Coverage/537b0ce56e744f078f17cc8ccd4200d8)](https://www.codacy.com/gh/tj-django/django-view-breadcrumbs/dashboard?utm_source=github.com&utm_medium=referral&utm_content=tj-django/django-view-breadcrumbs&utm_campaign=Badge_Coverage) [![PyPI version](https://badge.fury.io/py/django-view-breadcrumbs.svg)](https://badge.fury.io/py/django-view-breadcrumbs) [![Updates](https://pyup.io/repos/github/tj-django/django-view-breadcrumbs/shield.svg)](https://pyup.io/repos/github/tj-django/django-view-breadcrumbs/)  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> [![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) 
        <!-- ALL-CONTRIBUTORS-BADGE:END -->
        
        
        This provides a generic set of breadcrumb mixin classes.
        
        Requires adding ```{% render_breadcrumbs %}``` to just the base template.
        
        ![Screenshot](./breadcrumbs.png)
        
        
        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```
        
        ```jinja2
        {% load view_breadcrumbs %}
        
        {% block breadcrumbs %}
            {% render_breadcrumbs %} {# Optionally provide a template e.g {% render_breadcrumbs "view_breadcrumbs/bootstrap5.html" %} #}
        {% endblock %}
        ```
        
        And your ```create.html```.
        
        ```jinja2
        {% 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
        
        ```bash
        $ pip install django-view-breadcrumbs
        
        ```
        
        Add app to your INSTALLED_APPS
        
        ```python
        
        INSTALLED_APPS = [
            ...,
            'view_breadcrumbs',
            ...,
        ]
        ```
        
        ## Settings
        
        | Name                       | Default                                     | Description |    Options          |
        |----------------------------|---------------------------------------------|-------------|---------------------|
        | `BREADCRUMBS_TEMPLATE`     | `'view_breadcrumbs/bootstrap4.html'`        |  Template used to render breadcrumbs.           |   [Predefined Templates](https://github.com/tj-django/django-view-breadcrumbs/tree/master/view_breadcrumbs/templates/view_breadcrumbs)                 |
        | `BREADCRUMBS_HOME_LABEL`   |  `Home`                                     |  Default label for the root path  |         |
        
        
        
        ## 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.
        
        
        ### Settings
        
        To modify the root label site wide use
        
        `BREADCRUMBS_HOME_LABEL` - Sets the root label (default: `Home`)
        
        
        #### Example 
        
        ```python
        
        BREADCRUMBS_HOME_LABEL = 'My new home'
        ```
        
        *Renders*
        
        ![Screenshot](./custom-root-breadcrumb.png)
        
        
        *Using django's [translation](https://docs.djangoproject.com/en/3.1/topics/i18n/translation/) support*
        
        ![Translated Screenshot](./translated-crumbs.png)
        
        ### View Configuration
        
        > NOTE: All url config should use a pattern `view_name=model_verbose_name_{action}`  
        
        
        |  Actions  |  View Class |  View name  | Sample Breadcrumb |
        |-----------|-------------|-------------|-------------------|  
        | `list`    | `ListView`  | `{model.verbose_name}_list` |  `Home / Posts`  |
        | `change`  | `UpdateView`| `{model.verbose_name}_change` | `Home / Posts / Test - Post / Update Test - Post` |
        | `detail`  | `DetailView`| `{model.verbose_name}_detail` | `Home / Posts / Test - Post` |
        
        
        #### Sample crumbs:  `Home / Posts / Test - Post`
        
        In your `urls.py`
        ```python
          urlpatterns = [
              ...
              path('posts/<slug:slug>', views.PostDetail.as_view(), name='post_detail'),
              ...
          ]
        
        ```
        `views.py`
        ```python
        from django.views.generic import DetailView
        from view_breadcrumbs import DetailBreadcrumbMixin
        
        
        class PostDetail(DetailBreadcrumbMixin, DetailView):
            model = Post
            template_name = 'app/post/detail.html'
        ```
        
        #### Sample crumbs: `Posts`
        
        > All crumbs use the home root path `/` as the base this can be excluded by specifying `add_home = False`
        
        ```python
        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.
        ```python
        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
        
        ```python
        from django.urls import reverse
        from django.views.generic import ListView
        from view_breadcrumbs import ListBreadcrumbMixin
        from demo.models import TestModel
        
        
        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
        
        ```python
        from django.urls import reverse
        from django.views.generic import ListView
        from view_breadcrumbs import ListBreadcrumbMixin
        from demo.models import TestModel
        from django.utils.functional import cached_property
        
        
        class TestView(ListBreadcrumbMixin, ListView):
            model = TestModel
            template_name = 'app/test/test-list.html'
        
            @cached_property
            def crumbs(self):
                return [('My Test Breadcrumb', reverse('test_list_view'))]
        
        ```
        
        ### Overriding the Home label for a specific view
        
        ```python
        from django.utils.translation import gettext_lazy as _
        from view_breadcrumbs import DetailBreadcrumbMixin
        from django.views.generic import DetailView
        from demo.models import TestModel
        
        
        class TestDetailView(DetailBreadcrumbMixin, DetailView):
             model = TestModel
             home_label = _('My custom home')
             template_name = 'demo/test-detail.html'
        ```
        
        > Refer to the [demo app](https://github.com/tj-django/django-view-breadcrumbs/tree/master/demo) for more examples.
        
        ## Running locally
        
        ```bash
        $ make install-dev
        $ make migrate
        $ make run
        ```
        
        Spins up a django server running the demo app.
        
        Visit `http://127.0.0.1:8090`
        
        ## Credits
        - [django-bootstrap-breadcrumbs](https://github.com/prymitive/bootstrap-breadcrumbs)
        
        
        ## Contributors ✨
        
        Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
        
        <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
        <!-- prettier-ignore-start -->
        <!-- markdownlint-disable -->
        <table>
          <tr>
            <td align="center"><a href="https://fansourcedpoisontour.com"><img src="https://avatars3.githubusercontent.com/u/1037197?v=4" width="100px;" alt=""/><br /><sub><b>Derek</b></sub></a><br /><a href="https://github.com/tj-django/django-view-breadcrumbs/commits?author=KrunchMuffin" title="Documentation">📖</a></td>
          </tr>
        </table>
        
        <!-- markdownlint-enable -->
        <!-- prettier-ignore-end -->
        <!-- ALL-CONTRIBUTORS-LIST:END -->
        
        This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
        
Keywords: django breadcrumbs,breadcrumbs,django generic views breadcrumb
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.0
Classifier: Framework :: Django :: 2.1
Classifier: Framework :: Django :: 2.2
Classifier: Framework :: Django :: 3.0
Classifier: Framework :: Django :: 3.1
Requires-Python: >=3.5
Description-Content-Type: text/markdown
Provides-Extra: development
Provides-Extra: docs
Provides-Extra: test
Provides-Extra: lint
Provides-Extra: deploy
