templateのurlタグでsyntax error
templateファイルを調べても文法的におかしいところはない。
{% load url from future %}
(中略)
<a href="{% url 'django.contrib.auth.views.login' %}">ログイン</a>
該当するurlsを見ても、特に問題はないし、更に言うならば
django.contrib.auth.views.loginをGETした結果のrender中にも発生したので、
urls.py には異常が無いんだと思い込んでいた。
しかし、エラーのコールスタックを良く見てみると、最後はreモジュール
つまり正規表現でエラーが発生していると分かる。
コード中で正規表現を使っているのは、validatorかurlsだけだった。
validatorにはずっと手を入れてないので、エラーが起こるわけがない。
この時点で勘が良ければ気づけたんだけど、分からなかった。
完全にハマった。
google先生に尋ねたところ、stackoverflowにて同様の現象を確認。
どうやらurls.pyのurlpattersの指定が間違っていたらしい。
URLパラメータを指定する箇所で
?P<hoge>
の P が足りなかったりすると起きるらしい。
親のurlsからincludeしたurlsまで全部確かめて見たら。
url(r'^monthly/(?<year>\d{4})/(?<month>\d{2})/$', views.log.monthly),
確かにPがない部分がある、1箇所だけ。ちなみにエラーが発生したurlの指定は
{% url 'django.contrib.auth.views.login' %}
であり、合致しないし設定してあるurls.pyファイルも違う。
修正したら問題なく表示された。
ありがとうgoogle、ありがとうstackoverflowの名も無きcoder。
最終更新:2013年01月10日 19:25