关于Namespacing URL names的Django教程描述了主urlpatterns
在为应用包含namespace
时可以指定urls
,例如:
urlpatterns = patterns('',
url(r'^polls/', include('polls.urls', namespace="polls")),
...
然后命名空间用于在呈现模板时区分引用,如'polls:detail'
,如:
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
但是,据我所知,应用程序已经根据目录位置进行了区分,就像在这种情况下“pool /”用于“pool”应用程序一样,那么为什么需要这个namespace
指示,当模板是位于app目录下?
使用namespace
是否意味着必须修改导入应用的模板才能匹配namespace
中所选的include
值?
答案 0 :(得分:2)
命名空间可能很有用,然后不同的应用程序具有相同名称的网址。您如何区分detail
应用中的polls
应用detail
来自profiles
应用的polls:detail
网址?使用命名空间,您可以使用profiles:detail
和urlpatterns = patterns('',
url(r'^polls/', include('polls.urls', namespace="polls")),
url(r'^other_polls/', include('polls.urls', namespace="other_polls")),
...
)
而不会发生任何冲突。
命名空间还允许您将一个应用程序附加到单个项目中的不同URL。
{{1}}