2014-10-20 76 views
2

當爲photologue應用到django-CMS創造一個apphook,我遇到了麻煩:能否在django中註冊名稱空間而不添加URL模式?

"photologue" is not a registered namespace 

試圖扭轉的URL,例如當:

href="{% url 'photologue:pl-gallery-archive-year' date.year %}" 

我目前的解決方案是在urls.py的cms url下添加一個'foo'url模式,這樣foo永遠不會匹配,但photologue命名空間已經註冊。

urls.py:

urlpatterns = i18n_patterns('', 
    url(r'^admin/', include(admin.site.urls)), # NOQA 
    url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', 
     {'sitemaps': 
      { 
       'cmspages': CMSSitemap, 
       'photologue_galleries': GallerySitemap, 
       'photologue_photos': PhotoSitemap, 
      }}), 

    url(r'^', include('cms.urls')), 
    url(r'^foo/', include('photologue.urls', namespace='photologue')), 

) 

cms_app.py:

class GalleriesApphook(CMSApp): 
    name = _("Galleries Apphook") 
    urls = ["photologue.urls"] 
    app_name = "photologue" 
apphook_pool.register(GalleriesApphook) 

我的問題是:有一個更清潔的方式做到這一點?像django核心中的「register_namespace」函數一樣?

編輯

我發現在imagestore doc東西 「稍微乾淨」。爲了不污染網址,他們用命名空間重新包含cms。

url(r'^', include('cms.urls', namespace='imagestore')) 
+2

您通過將'app_name'添加到'GalleriesApphook'來做了正確的事情。此外,app_name命名空間保存在cms頁面的高級設置中(選擇Apphook的選擇框旁邊)。只要您只添加了一次Apphook,它就可能被隱藏(嘗試添加兩次)。也許該字段包含錯誤的/陳舊的條目。它應該默認爲你定義爲'app_name'的任何東西,但是當你最初添加apphook時,你可能還沒有在代碼中有這個。這可能也是django CMS中的一個錯誤。 – stefanfoulis 2014-11-05 13:46:10

+0

@stefanfoulis謝謝,我會檢查出來...... – user2346536 2014-11-05 13:50:10

回答

1

我有完全相同的問題。我用@stefanfoulis提示來解決它,以添加應用程序實例名稱。第一次啓動時,我沒有app_name。

相關問題