失敗談 技術

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

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

関連記事

PythonでAESを使用して暗号/復号する

1.つづき Pythonで、PKCS#12の公開鍵で暗号、秘密鍵で復号するプログラムの続きです。 今回はAESで暗号化/復号を行い、通信しながらRSA暗号/復号,AES暗号/復号を組み合わせたいと思い …

リモート実家帰りしてみる

このご時世、実家には直接帰れないけど、1月には一応実家帰り的な感じでリモート実家帰りをしようかと思いました。 リモートは大変。。 一応実家には自分で設置したインターネットや無線LANがあるので、Zoo …

SPAMチェック for OCN の開発

前回、Thunderbirdプラグインの概要を書いたので、今回は開発したプラグインについて書きます。 SPAMチェック for OCNとは 以下の機能を持ったThunderbirdのアドオン(プラグイ …

Python3 – VCR.py でネットワーク系テストを簡単に作成する

1. 始めに python3で実装すると、モックテストをしたくなります。モックを使って、比較的簡単にテストできるからです。 問題はネットワーク系テスト モックテストで問題になるのは、外部に依存するテス …

めっちゃ冷や汗。。(^^;;)

めっちゃ冷や汗が出たので、書いておこう。。 $ ls [‘ [‘という名のファイルを無意識に作ったらしい。もちろん意図的ではない。 なんとなく、消そうとして、、、 $ rm -rf “[\ …

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