為可重用的應用程式設定 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/'

如果未明確設定例項名稱空間,則預設為應用程式名稱空間。