2014-10-20 50 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。

相关问题