可以在django中注册命名空间,而不添加URL模式



在django CMS中为photologue应用程序创建apphook时,我遇到了麻烦:

"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_name"函数吗?

编辑

我在imagestore文档中发现了一些"稍微干净一点"的东西。为了不污染url,他们重新包含了带有名称空间的cms。

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

我遇到了完全相同的问题。我用@stefanfoulis提示添加应用程序实例名称解决了这个问题。我第一次启动时没有app_name。

最新更新