在django项目中提供简单breadcrumbs功能的通用应用程序
django-url-breadcrumbs的Python项目详细描述
Django的一个通用面包屑应用程序(>;=1.4)。
这个想法是用url路径的一部分制作面包屑。此应用程序假设您的url模式结构良好。例如:
/ # root path /application/ # root of an app/module /application/object_type/ # list of specific objects /application/object_type/some_object/ # details of specific object /application/object_type/some_object/edit/ # edit (or any other operations) of a specific object
安装
从pypi安装包。例如通过pip:
pip install django-url-breadcrumbs
将urlbreadcrumbs添加到已安装的应用程序:
INSTALLED_APPS = ( ... 'urlbreadcrumbs', ... )
确保您的TEMPLATE_CONTEXT_PROCESSORS中有一个请求上下文处理器django.core.context_processors.request。
用法
假设您的URL格式为:
在ROOT_URLCONF:
from django.conf.urls import patterns, include, url from myproject.views import some_view urlpatterns = patterns('', url(r'^$', some_view, {'template' : 'index.html'}, name='index'), url(r'^test1/', include('test1.urls')), )
urls.py在名为test1的应用程序中:
from django.conf.urls import patterns, include, url from test1.views import some_view urlpatterns = patterns('', url(r'^example/$', some_view, {'template' : 't1.html'}, name='t1home'), )
为了定义面包屑,可以在settings.py中进行如下映射:
URLBREADCRUMBS_NAME_MAPPING = { 'index' : 'Home page', 't1home' : 'Index page of Test1', }
然后在您的基本模板(让我们称之为base.html)中,您可以编写这个:
{% load urlbreadcrumbs_tags %} {% render_breadcrumbs %}
或者您可以指定自己的模板:
{% render_breadcrumbs "test1/mybreadcrumbs_template.html" %}
您也可以只包括您的面包屑模板:
{% include "test1/mybreadcrumbs_template.html" %}
但是要像这样使用它,请确保您已经添加了一个上下文进程urlbreadcrumbs.context_processors.build_breadcrumbs 在您的TEMPLATE_CONTEXT_PROCESSORS设置中。
在模板中,还有一个名为^{tt11}的附加上下文变量$ 它是包含面包屑的名称和url的两个元组的列表。 django-url-breadcrumbs(urlbreadcrumbs/default.html)使用的默认模板如下:
{% for n,u in breadcrumbs %} {% if not forloop.last %} <a href="{{ u }}">{{ n }}</a> » {% else %} {{ n }} {% endif %} {% endfor %}
所以现在,假设模板t1.html在查看^{tt16}时扩展了base.html。$ 你应该看到这样的Home page » Index page of Test1。
为面包屑指定名称的另一种方法是在urls.py中使用自定义的url函数。 不用在URLBREADCRUMBS_NAME_MAPPING设置中定义映射,您可以在ROOT_URLCONF和test1应用程序的urls.py中执行此操作:
from django.conf.urls import patterns, include, url from urlbreadcrumbs import url as burl urlpatterns = patterns('', ... burl(r'^test1/', include(test1_urls)), ... )
以及
from django.conf.urls import patterns, include, url from test1.views import some_view from urlbreadcrumbs import url as burl urlpatterns = patterns('', burl(r'^example/$', some_view, {'template' : 't1.html'}, name='t1home', verbose_name='Index page of Test1'), )
这应该和前面的例子一样。
开发
欢迎提出意见和/或错误报告。考虑在https://bitbucket.org/slafs/django-url-breadcrumbs/issues?status=new&status=open
上报告问题也欢迎拉取请求;)。
要开始使用此应用程序,请从BitBucket获取源代码:
hg clone https://bitbucket.org/slafs/django-url-breadcrumbs
在新创建的virtualenv中,执行以下操作:
pip install -r dev_requirements.txt python setup.py test