Нечто подобное может работать для вашей ситуации:
Захватите весь URL в вашем представлении и сделайте ссылки с него. Это потребует изменения вашего urls.py, каждого представления, в котором должны быть хлебные крошки, и ваших шаблонов.
Сначала вы должны захватить весь URL в файле urls.py
оригинал urls.py
...
(r'^myapp/$', 'myView'),
(r'^myapp/(?P<pk>.+)/$', 'myOtherView'),
...
новый urls.py
...
(r'^(?P<whole_url>myapp/)$', 'myView'),
(r'^(?P<whole_url>myapp/(?P<pk>.+)/)$', 'myOtherView'),
...
Тогда, на ваш взгляд, что-то вроде:
views.py
...
def myView(request, whole_url):
# dissect the url
slugs = whole_url.split('/')
# for each 'directory' in the url create a piece of bread
breadcrumbs = []
url = '/'
for slug in slugs:
if slug != '':
url = '%s%s/' % (url, slug)
breadcrumb = { 'slug':slug, 'url':url }
breadcrumbs.append(breadcrumb)
objects = {
'breadcrumbs': breadcrumbs,
}
return render_to_response('myTemplate.html', objects)
...
Который должен быть извлечен в функцию, которая импортируется в представления, которым это необходимо
Тогда в вашем шаблоне распечатайте панировочные сухари
myTemplate.html
...
<div class="breadcrumb-nav">
<ul>
{% for breadcrumb in breadcrumbs %}
<li><a href="{{ breadcrumb.url }}">{{ breadcrumb.slug }}</a></li>
{% endfor %}
</ul>
</div>
...
Одним из недостатков такой работы является то, что в ее нынешнем виде вы можете отображать только часть каталога в качестве ссылки. Единственное исправление для этого (вероятно, не очень хорошее) - сохранить словарь в файле, который определяет функцию breadcrumb.
Во всяком случае, это один способ, которым вы могли бы сделать панировочные сухари, ура :)) 1023 *