2012-03-13 7 views
0

django-cms 2.2、django 1.3.1django-cms apphook + menu

私はギャラリーと呼ばれるアプリケーションを作成しています。ギャラリーには写真があります。 - ギャラリーのapphook(ギャラリー詳細(ギャラリー内の写真)ビューのために必要)

  • cms_plugins.py - のためのプラグイン

    • cms_app.py:

      私は次のような構造を持っている(多くのギャラリーがあります)ギャラリー一覧

    • menu.py - 各ギャラリーは独自のページ(ゲーラリー内部の写真を)持っている、私たちはここにメニューを生成
    • views.py - ギャラリー詳細ビュー(内部写真)
    • urls.py - //あなたのためのURL
    • /another-gallery-list/ PK = 1つのギャラリーの写真 - - もう一つのページのギャラリー
    • /gallery-list/1/のリストについては、ページ -

      • /gallery-list/:pphookは、ビュー内の写真のためにname=gallery_details

      URL構造を添付しますギャラリー一覧

    • /another-gallery-list/1/ - pk = 1の写真ギャラリー(/gallery-list/1/と同じですが、異なるurリットル)

    ジャンゴ-CMSページ構造:

  • ページ/another-gallery-list/のリストについては、apphook =ギャラリーアプリフック+プラグインとギャラリーのリストについては、apphook =ギャラリーアプリフック+プラグインと

    • ページ/gallery-list/ (同じですが、異なるインスタンス)のギャラリー

    メニュー:

    • ギャラリー
      • ギャラリー1
    • 別のギャラリー
      • ギャラリー1

    問題:どのように私は、このようなギャラリーのためのメニューを生成していますか?

    現在、私はCMSAttachMenuを作成し、ノードを生成しています(モデルから)。どうすればURLを作成できますか? reverse('gallery_details', args=[self.pk])get_absolute_urlメソッド)を使用しようとしていますが、それは私にURL:/galleries/<id>/を与えます。私が得たいのは、のapphookが添付されているページに応じて、/gallery-list/1//another-gallery-list/1/です。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/' –

    +0

    あなたはあなたの' urls.py'を投稿できますか? 'gallery'と' gallery-list'は各ギャラリーが添付されているページのURLでなければなりません。ギャラリーアプリケーション 'urls.py'の' gallery_detail' URLは 'url( '^(?P \ d +)/ $'、 'gallery.views.detail'、 'gallery_detail'のようなものです。 'の代わりに' url( '^ gallery /(?P \ d +)/ $'、 'gallery.views.detail'、 'gallery_detail')のようになります。通常は何でしょうか –

    +0

    urls.pyからの正確な行は: 'url(r '^(?P \ d +)/ $'、 'list'、name = 'gallery_details')、 –