Django の urls.html の name, namespace

Reverse for 'index' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 的なエラーがでてきてなかなか辛かったので備忘録です (´・ω・`)

Django の Tutorial ではいずれも同じ意味を成します。

<li><a href="/polls/{{ question.id }}/">            {{ question.question_text }}</a></li>
<li><a href="{% url 'detail' question.id %}">       {{ question.question_text }}</a></li>
<li><a href="{% url 'polls:detail' question.id %}"> {{ question.question_text }}</a></li>

Writing your first Django app, part 3 | Django documentation | Django
 

① ベタ書き

<li><a href="/polls/{{ question.id }}/">            {{ question.question_text }}</a></li>

Write views that actually do something
 

② 少し進化

<li><a href="{% url 'detail' question.id %}">       {{ question.question_text }}</a></li>

Removing hardcoded URLs in templates
 

このように書けるようにするには
あらかじめ polls/urls.py で name を定義しておく必要がある。

    url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),

 

③ もっと進化

<li><a href="{% url 'polls:detail' question.id %}"> {{ question.question_text }}</a></li>

Writing your first Django app, part 3 | Django documentation | Django
 

このように書けるようにするには
あらかじめ mysite/urls.py で namespace を定義しておく必要がある。

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