我无法创建嵌套的命名空间,就像每次我超过1级时都会在https://docs.djangoproject.com/en/1.4/topics/http/urls/中显示的那样我失去了所有其他命名空间有没有人成功使用过这个,如果有的话,什么是django的最佳实践网址。
urlpatterns_3rd_level = patterns('example.basket.views', url(r'^3rd$', 'home', name='home'))
urlpatterns_2nd_level = patterns('', url(r'^2nd$', include(urlpatterns_3rd_level, namespace='basket')))
urlpatterns = patterns('', url(r'^1st$', include(urlpatterns_2nd_level, namespace='store')))
reverse('store:basket:home') # No namespace named basket
答案 0 :(得分:1)
看起来你可以更深入了,因为你用美元符号$
完成了正则表达式。发生这种情况时,Python会将其识别为表达式的结尾并停止匹配后面的任何内容,这可能会产生Url not found
或您未请求的其他页面。
请注意,每次他们在文档中使用include
时,正则表达式都没有$
符号,因为通常您不希望在包含的URL中结束表达式。
您的示例可能没有$
这样的标志:
urlpatterns_3rd_level = patterns('example.basket.views', url(r'^3rd$', 'home', name='home'))
urlpatterns_2nd_level = patterns('', url(r'^2nd', include(urlpatterns_3rd_level, namespace='basket')))
urlpatterns = patterns('', url(r'^1st', include(urlpatterns_2nd_level, namespace='store')))
reverse('store:basket:home') # No namespace named basket
提示:仔细检查example.basket.views
是否是您应用中的有效模块,因为错误可能是该模块不存在。
从shell中我测试了它并且它产生了:
>>> '/1st2nd3rd'
希望这有帮助!