django通用视图面包屑
django-view-breadcrumbs的Python项目详细描述
django视图面包屑
这扩展了django-bootstrap-breadcrumbs,提供了通用的面包屑混合类。
只需要将{% breadcrumb $label $viewname [*args] [**kwargs] %}
添加到基模板。
在base.html
模板中,只需添加render_breadcrumbs
标记和任何模板
继承基的应该包含breadcrumbs。
即
base.html
{% load django_bootstrap_breadcrumbs %} {% block breadcrumbs %} {% render_breadcrumbs %} {% endblock %}
还有你的create.html
。
{% extends 'base.html' %}< H2>面包屑混合类。< /H2>
BaseBreadcrumbMixin
-基视图需要一个crumbs
类属性。CreateBreadcrumbMixin
-用于创建视图Home \ Posts \ Add Post
DetailBreadcrumbMixin
-用于详细视图Home \ Posts \ Post 1
ListBreadcrumbMixin
-对于列表视图Home \ Posts
UpdateBreadcrumbMixin
-用于更新视图Home \ Posts \ Post 1 \ Update Post 1
安装:
$ pip install django-view-breadcrumbs
将应用程序添加到已安装的应用程序中
INSTALLED_APPS=[...'django_bootstrap_breadcrumbs','view_breadcrumbs',...]
用法:
^
使用通用面包屑混合将每个面包屑动态添加到视图中
并且可以通过提供crumbs
属性来重写。
设置:
BREADCRUMBS_HOME_LABEL
-设置根标签(默认值:Home
)
样品碎屑:Home \ Posts \ Test - Post
NOTE: All url config should use a pattern
view_name=model_verbose_name_{action}
i.eview_name=post_detail
for detail view.
操作包括:
- “列表”-
ListView
- “更改”-
UpdateView
- “细节”-
DetailView
在你的urls.py
urlpatterns=[...path('posts/<slug:slug>',views.PostDetail.as_view(),name='post_detail'),...]
views.py
fromdjango.views.genericimportDetailViewfromview_breadcrumbsimportDetailBreadcrumbMixinclassPostDetail(DetailBreadcrumbMixin,DetailView):model=Posttemplate_name='app/post/detail.html'
All crumbs use the home root path
\
as the base this can be excluded by specifyingadd_home = False
样品碎屑:Posts
fromdjango.views.genericimportListViewfromview_breadcrumbsimportListBreadcrumbMixinclassPostList(ListBreadcrumbMixin,ListView):model=Posttemplate_name='app/post/list.html'add_home=False
Can also override the view breadcrumb by specifying a list of tuples
[(Label, view path)]
.
定制面包屑:Home \ My Test Breadcrumb
URL配置
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
fromdjango.urlsimportreversefromdjango.views.genericimportListViewfromview_breadcrumbsimportListBreadcrumbMixinfromdemo.modelsimportTestModelclassTestView(ListBreadcrumbMixin,ListView):model=TestModeltemplate_name='app/test/test-list.html'crumbs=[('My Test Breadcrumb',reverse('test_list_view'))]# OR reverse_lazy
或
fromdjango.urlsimportreversefromdjango.views.genericimportListViewfromview_breadcrumbsimportListBreadcrumbMixinfromdemo.modelsimportTestModelfromdjango.utils.functionalimportcached_propertyclassTestView(ListBreadcrumbMixin,ListView):model=TestModeltemplate_name='app/test/test-list.html'@cached_propertydefcrumbs(self):returnsuper(TestView,self).crumbs+[(self.object.name,reverse('test_detail_view',kwargs={'pk':self.object.pk})),]
覆盖特定视图的主标签
fromdjango.utils.translationimportgettext_lazyas_fromview_breadcrumbsimportDetailBreadcrumbMixinfromdjango.views.genericimportDetailViewfromdemo.modelsimportTestModelclassTestDetailView(DetailBreadcrumbMixin,DetailView):model=TestModelhome_label=_('My custom home')template_name='demo/test-detail.html'
Refer to the demo app for more examples.
在本地运行
$ make migrate $ make run
启动运行演示应用程序的django服务器。
访问http://127.0.0.1:8000