使用命名空间有什么好处?

What's the advantage of using namespace?

一般

我阅读并尝试了命名空间,但我不明白:使用命名空间有什么好处。

我对命名空间做了什么

我将我的应用程序包含在 urls.py 项目中

url(r'^myapp/', include('myapp.urls', namespace='myapp')),

在应用程序中 urls.py 我有

url(ur'^$', index, name='index'),

在应用程序模板中,我可以通过

设置link
<a href="{% url 'myapp:index' %}">

问题

如果我将 'myapp' 作为可重复使用的应用程序进行共享,我会强制用户将应用程序包含在给定的命名空间 'myapp' 中。为什么我不应该在 urls.py 中将 url 名称命名为 'myapp-index' 而不是 'index'?

url(ur'^$', index, name='myapp-index'),

并在模板中

<a href="{% url 'myapp-index' %}">

如果您将 url 命名为 'myapp-index',这是一种名称间距。 Django 中的命名空间功能是为了帮助最佳实践并有一个标准。标准有助于可视化模式。

您不必使用命名空间,但它很有用。您用来避免与第三方应用程序(甚至您项目中的多个应用程序)发生冲突。

您可以在 https://docs.djangoproject.com/en/dev/topics/http/urls/#url-namespaces

中阅读更多内容