【Django基礎入門】Breadcrumbs導航欄

紅色字體是本人改動(本人使用過程中遇到的坑)

1:添加 django-breadcrumbs

  1. pip install django-breadcrumbs 

2:a,在 MIDDLEWARE_CLASSES 添加 breadcrumbs.middleware.BreadcrumbsMiddleware

      b,如果在 TEMPLATE_CONTEXT_PROCESSORS 沒有添加 context processor,那麼就添上它,如下:

  1. TEMPLATE_CONTEXT_PROCESSORS = (  
  2.     "django.contrib.auth.context_processors.auth",  
  3.     "django.core.context_processors.debug",  
  4.     "django.core.context_processors.i18n",  
  5.     "django.core.context_processors.media",  
  6.     "django.contrib.messages.context_processors.messages",  
  7.     'django.core.context_processors.request',  
  8. )  

 

   本人使用django1.9時需要在INSTALLED_APPS添加下面兩行:

      'django.contrib.sites',
      'django.contrib.flatpages',



3:在模版中添加如下模塊(可以先跳過這一步,待會回頭在看)

  1. {% for breadcrumb in request.breadcrumbs %}  
  2. <a href="{{ breadcrumb.url }}">{{ breadcrumb.name }}</a>{% if not forloop.last %} » {% endif %}  
  3. {% endfor %}  

4:在view.py中添加如下信息
  1. from django.shortcuts import render_to_response
  2. from django.template import RequestContext
  3. def activity(request):  
  4.       
  5.     request.breadcrumbs([(_("homepage"),'/'),  
  6.                          (_("activity"),'/activity/')  
  7.                          ])  
  8.     activities = Activity.objects.all()  
  9.     return render_to_response('org/activity.html' , {'activities':activities} , context_instance=RequestContext(request))   


即:將 
  1. request.breadcrumbs([(_("homepage"),'/'),  
  2.                         (_("activity"),'/activity/')  
  3.                         ])  
放到任何與頁面顯示有關的 view 中(比如 render_to_response 返回了一個模版),它不會影響你的代碼,所以,添加上後可以忽視它,

然後在相應的模版里加上 如上 第三步 代碼,即可顯示 導航欄。


優化:

當然,一般模版有繼承關係,例如導航欄放在所有模版的公共模塊(header.html),其它所有子模版集成header.html ,那麼僅僅需要在 header.html 中添加如上第三步代碼即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章