在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。