- Fix case duplicates (guide→Guide, project→Project, etc.) - Consolidate single-post tags into broader categories - Add technology tags (Python, AWS, Salt, Docker, Kubernetes) to 93 posts - Add lib/tag_stats.py tool for checking tag usage - Update CLAUDE.md with tag guidelines
58 lines
1.8 KiB
ReStructuredText
58 lines
1.8 KiB
ReStructuredText
Add a Breadcrumb Subscriber to a Pyramid project using 4 simple steps
|
|
#####################################################################
|
|
:date: 2011-07-02 17:25
|
|
:author: Russell Ballestrini
|
|
:tags: Code, Guide, Python
|
|
:slug: add-a-breadcrumb-subscriber-to-a-pyramid-project-using-4-simple-steps
|
|
:status: published
|
|
:summary:
|
|
|
|
**Note:** This post shows an old way to modify the request object.
|
|
I discuss a new way in my `Pyramid add_request_method </register-super-powers-with-pyramid-add-request-method/>`_ post.
|
|
|
|
This article will explain how to add a breadcrumb subscriber to a
|
|
Pyramid project using 4 simple steps.
|
|
|
|
While programming https://school.yohdah.com/ I needed the ability to easily create
|
|
breadcrumb links from the current url. You may view the `bread.py source
|
|
code
|
|
here <https://bitbucket.org/russellballestrini/bread/src/tip/bread.py>`__.
|
|
The following guide describes the process I took to add this
|
|
functionality.
|
|
|
|
1. Download and include
|
|
`bread.py <https://bitbucket.org/russellballestrini/bread/raw/tip/bread.py>`__
|
|
at the top of your Pyramid project's \_\_init\_\_.py file:
|
|
|
|
::
|
|
|
|
from yourproject.bread import Bread
|
|
from pyramid.events import subscriber, NewRequest
|
|
|
|
2. At the bottom of the projects \_\_init\_\_.py file create the
|
|
following subscriber function as follows:
|
|
|
|
::
|
|
|
|
def bread_subscriber( event ):
|
|
""" Build Bread object and add to request """
|
|
event.request.bread = Bread( event.request.url )
|
|
|
|
3. Now we can add our new subscriber to our Pyramid config inside
|
|
main and above the routes:
|
|
|
|
::
|
|
|
|
config.add_subscriber(bread_subscriber, NewRequest)
|
|
|
|
4. You are done! Now you should have the ability to use the bread
|
|
object from your template. Below I have provided a mako template
|
|
snippet:
|
|
|
|
::
|
|
|
|
% for link in request.bread.links:
|
|
${ link | n } /
|
|
% endfor
|
|
|
|
.. contents::
|