为可重用的应用程序设置 URL 命名空间(Django 1.9)

通过设置 app_name 属性,将应用程序的 URLconf 配置为自动使用 URL 命名空间:

# In <myapp>/urls.py
from django.conf.urls import url

from .views import overview

app_name = 'myapp'
urlpatterns = [
    url(r'^$', overview, name='overview'),
]

当它包含在根 URLconf>中时,这将把应用程序命名空间设置为'myapp'。你的可重用应用程序的用户除了包含你的 URL 之外,不需要进行任何配置:

# In <myproject>/urls.py
from django.conf.urls import include, url

urlpatterns = [
    url(r'^myapp/', include('myapp.urls')),
]

你的可重用应用程序现在可以使用应用程序命名空间来反转 URL:

>>> from django.urls import reverse
>>> reverse('myapp:overview')
'/myapp/overview/'

根 URLconf 仍然可以使用 namespace 参数设置实例名称空间:

# In <myproject>/urls.py
urlpatterns = [
    url(r'^myapp/', include('myapp.urls', namespace='mynamespace')),
]

应用程序命名空间和实例命名空间都可用于反转 URL:

>>> from django.urls import reverse
>>> reverse('myapp:overview')
'/myapp/overview/'
>>> reverse('mynamespace:overview')
'/myapp/overview/'

如果未明确设置实例名称空间,则默认为应用程序名称空间。