けっこうハマった。。
Django 2.2.4の話。以下のエラーを修正するのに、とっても時間がかかった。
django.urls.exceptions.NoReverseMatch: Reverse for 'XXXXXXXXXX' with no arguments not found. 1 pattern(s) tried: [YYYYYYYYYYYYYY]
なんでこのエラーが?
いろいろ検索すると、urls.pyの打ち間違いが多いらしい。なので、urls.pyを何度も見たのだが間違ってない。。
なんでだっとおもったら。。urls.pyに以下のように書いていたのが間接的な原因。
path('path/path1/<slug:param>/path2', views.path2, name='path2'),
上記の打ち間違いかっ、と思ったらそうじゃなかった。
「slug」というのは、例えば、
のようなURLにアクセスした場合、”data99″という文字列を取得できる設定のことだ。http://host/path/path1/data99/path2
そして、<>
を使っていて、かつ、以下のようなDjangoのurl設定を使用している場合、引数(以下の場合は”param”)を書いておく必要があるようだ。
<a href="{% url 'appname:path2' param %}">
paramを書き忘れると、urls.pyに書いたURLにアクセスしても、一番上のエラーになるのだった。。
paramを書き忘れてて、おもいきりはまった。。。
HTMLテンプレートに、url設定を先に書いておいて、paramをurls.py側で、後で付け足したので、こうなった。。
Djangoのurls.py設定、結構苦手な私。。
bottle.pyとか、flaskのように、@routeのような「routeデコレーター」で設定させてもらえませんかね。。