在django项目中提供简单breadcrumbs功能的通用应用程序

django-url-breadcrumbs的Python项目详细描述


https://drone.io/bitbucket.org/slafs/django-url-breadcrumbs/status.png

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

安装

  1. 从pypi安装包。例如通过pip:

    pip install django-url-breadcrumbs
    
  2. urlbreadcrumbs添加到已安装的应用程序:

    INSTALLED_APPS = (
        ...
        'urlbreadcrumbs',
        ...
    )
    
  3. 确保您的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-breadcrumbsurlbreadcrumbs/default.html)使用的默认模板如下:

{% for n,u in breadcrumbs %}
    {% if not forloop.last %}
        <a href="{{ u }}">{{ n }}</a> &raquo;
    {% else %}
        {{ n }}
    {% endif %}
{% endfor %}

所以现在,假设模板t1.html在查看^{tt16}时扩展了base.html。$ 你应该看到这样的Home page » Index page of Test1

为面包屑指定名称的另一种方法是在urls.py中使用自定义的url函数。 不用在URLBREADCRUMBS_NAME_MAPPING设置中定义映射,您可以在ROOT_URLCONFtest1应用程序的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

测试

django url breadcrumbs使用pytest来运行它的测试套件,使用tox来检查它的兼容性。 有不同的python和django版本。

要使用当前的python和django安装执行测试,请执行以下操作:

python setup.py test

要使用不同的python和django版本测试它,请运行以下命令:

tox

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
试图读取字段“java”。lang.反对安卓。util。一对首先   gradle对java的影响。属性作为任务的输入?   java我的return语句不起作用。我做错了什么?   java通用同步代码块[无对象锁定]   macos Java小程序游戏不能在Mac上运行,即使它可以在PC上运行   java Firebase GeoFire设置位置未在服务中工作   java排序字符串对象   java通过JLabel上传背景图像(jpg)后,如何将图像缩放到它所在的面板上?   java无法连接到jsp中的数据库   java如何在整个ant taskdef操作的执行过程中拥有一个singleton类实例   java如何在按键事件中检查JTtextField中的字符串数字验证器   如何最好地输出大型单行XML文件(使用Java/Eclipse)?   内存不足,Java运行时环境无法在Java应用程序中继续运行   java Hibernate连接错误:组织上的NullPointerException。冬眠hql。阿斯特。HqlSqlWalker。createFromJoinElement   linux将参数从shell脚本传递到java类   java对于接受多个参数的setter是否有类似于@JsonCreator的注释?   java在链表中添加节点