失敗談 技術

Djangoのurls.pyにはまった。。

投稿日:

けっこうハマった。。

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」というのは、例えば、http://host/path/path1/data99/path2のようなURLにアクセスした場合、”data99″という文字列を取得できる設定のことだ。

そして、<>を使っていて、かつ、以下のような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デコレーター」で設定させてもらえませんかね。。

-失敗談, 技術

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

暗号モードによる処理時間の違いを測定してみた

はじめに 前回、AESで暗号化する実装をしてみた際、知らない暗号モードが増えたなと思いました。 なので、どの暗号モードを使用すべきかの、判定材料の一つとして、代表的な暗号モードの処理速度を簡単に計って …

キーボード買った(Maestro2S 日本語配列)

キーボード購入 キーボードが完全にいかれたので新しいキーボードを買ってきました。 Maestro2S 日本語配列 Maestro2S 日本語配列 です。 画像 実は以前のキーボードとほぼ同じです。違う …

Python3 – django-webtest

忙しいので断片だけ。。 DjangoでWebブラウザからアクセスする感じでテストする、やり方の一つです。以前にやったように、 Seleniumからやってもいいのすが、そこまでじゃない場合の単体テスト方 …

Ubuntu 20.04のMySQL8.0.22でrootパスワードをリセットする

小ネタです。 休みなので 久しぶりにローカル環境のUbuntuでMySQLにアクセスしようとして、パスワードを見事に忘れたことに気づきました。 ubuntu 20.04なので、以下の手順でパスワードの …

seaborn + Pandas + Python によるグラフ描画(その1: 準備編)

グラフ描画してみよう 今現在の仕事で、グラフ描画する可能性があるので、少し練習してみようと思います。 題材について 突然ですが、私は確定拠出型年金に加入しています。証券会社はSBI証券 にしています。 …

google オプトアウト Click here to opt-out.