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