url.py内に以下にapp_nameという変数を定義すると、namespaceが定義できる。
urls.py
from django.conf.urls import url
from django.urls import path
# app_name is reserved word of Django. This define a namespace in URL
app_name = "testspace"
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'faq', views.faq, name='faq')
]
namespaceを使うと、HTML内のurlから以下のように呼び出すことができる。
other.html
<a href="{% url 'testspace:home' %}">Home</a>
逆に、app_nameを途中から付けた場合、これまで{% url 'faq' %}
で呼び出せていたものすべてにtest:
を付けないと、以下のようなエラーで表示されなくなる。
NoReverseMatchat /
Reverse for 'faq' not found. 'faq' is not a valid view function or pattern name.