2012-03-13 69 views
0

django-cms 2.2,django 1.3.1django-cms apphook +菜單

我正在創建一個名爲gallery的應用程序。畫廊裏面有照片。 (有許多畫廊)

我有以下結構:

  • cms_app.py - apphook圖庫(需要廊詳細內容(內部相冊)視圖)
  • cms_plugins.py - 插件畫廊名單
  • menu.py - 每家畫廊都有自己的頁面(內galery照片),我們在這裏生成菜單
  • views.py - 用於廊詳細視圖(內部照片)
  • urls.py - //網址爲pphook附加的內部看照片,name=gallery_details

URL結構:

  • /gallery-list/ - 頁面畫廊
  • /gallery-list/1/的名單 - PK = 1個畫廊的照片
  • /another-gallery-list/ - 另一個頁面畫廊列表
  • /another-gallery-list/1/ - pk = 1 gallery(與/gallery-list/1/相同,但不同的ur升)

的django-CMS頁面結構:

  • /gallery-list/與apphook =圖庫應用鉤+插件畫廊
  • /another-gallery-list/與apphook =圖庫應用鉤+插件的列表的列表畫廊(相同,但不同的實例)

菜單:

  • 畫廊
    • 圖庫1
  • 另一個畫廊
    • 圖庫1

問題:如何產生這樣的畫廊菜單?

目前我正在創建CMSAttachMenu並生成節點(從模型)。我如何製作網址?我試圖使用reverse('gallery_details', args=[self.pk])get_absolute_url方法),但它給了我的網址:/galleries/<id>/。我想要得到的是/gallery-list/1//another-gallery-list/1/根據頁面有apphook附。

下面是我使用的文檔:http://docs.django-cms.org/en/2.2/extending_cms/app_integration.html#app-hooks

幫助深表感謝。

回答

0

像下面這樣的東西應該工作。當有項目列表和項目詳細信息頁面時,我爲Project應用做了類似的操作。

class GalleryMenu(CMSAttachMenu): 
    name = _("Gallery Menu") 
    def get_nodes(self, request): 
     c=itertools.count() 
      nav = [ 
       NavigationNode(
        _(g.title), 
        reverse("gallery_detail", kwargs={ 'slug' : g.slug }), 
        next(c), parent_id=0 
       ) 
      for i,g in enumerate(Gallery.objects.all()) ] 
    return nav 
+0

這正是我所做的。問題是'reverse('gallery_details',args = [gallery.pk])''返回'/ gallery/1 /',應該返回'/ gallery-list/1 /'或'/ another-gallery-list/1/' – 2012-03-13 16:35:23

+0

你可以發佈你的'urls.py'嗎? 'gallery'和'gallery-list'應該是每個圖庫所附頁面的Url。然後,在你的gallery應用程序'urls.py'中,'gallery_detail' url應該像'url('^(?P \ d +)/ $','gallery.views.detail','gallery_detail') '而不是'url('^ gallery /(?P \ d +)/ $','gallery.views.detail','gallery_detail')'這就是通常的情況 – 2012-03-13 17:07:04

+0

urls.py的確切行是: 'url(r'^(?P \ d +)/ $','list',name ='gallery_details'),' – 2012-03-13 17:17:57