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