[解決済み] NoReverseMatchエラーとは何ですか、またどのように修正しますか?
質問
あるコードがあり、実行するとNoReverseMatchを投げてこう言います。
NoReverseMatch at /my_url/ Reverse for 'my_url_name' with arguments '()' and keyword arguments '{}' not found.n pattern(s) tried: []
これはどういうことですか、どうすればいいのですか?
解決方法は?
その
NoReverseMatch
エラーは、インストールしたアプリの URL にマッチする url パターンが Django に見つからなかったと言っています。
NoReverseMatch 例外は、与えられたパラメータに基づいて URLconf に一致する URL を特定できない場合に、 django.core.urlresolvers が発生させます。
デバッグを開始するには、与えられたエラーメッセージを解析することから始める必要があります。
-
NoReverseMatch at /my_url/
これは現在レンダリングされているURLで、アプリケーションが現在アクセスしようとしているのはこのURLですが、マッチングできないURLが含まれています。
-
my_url_name'の逆順です。
これは検索できないURLの名前です。
-
引数 '()' と
これらは、URL に提供する非キーワード引数です。
-
キーワード引数 '{}' が見つかりませんでした。
これらは、URL に提供されるキーワード引数です。
-
n個のパターンが試されました。[]
これらは、urls.py ファイルからマッチングを試みたパターンです。
まず、現在レンダリングされている url に関連するコードをソースから探します。URL、ビュー、そして関連するすべてのテンプレートです。ほとんどの場合、これはあなたが現在開発しているコードの一部になります。
これができたら、django が辿るであろう順序で、あなたの
my_url_name
. ここでも、おそらく最近変更した場所にあるはずです。
エラーの発生場所がわかったので、エラーメッセージの他の部分を使用して問題を解決してください。
URL名
- 誤字脱字はありませんか?
- 指定された名前にアクセスしようとするurlを提供しましたか?
-
app_nameをアプリの
urls.py
(例.app_name = 'my_app'
) または、アプリを名前空間付きで含めた場合 (例include('myapp.urls', namespace='myapp')
の場合、反転させるときに名前空間を含める必要があります。{% url 'myapp:my_url_name' %}
またはreverse('myapp:my_url_name')
.
引数・キーワード引数
引数とキーワード引数は、与えられた url 内に存在するキャプチャグループに対してマッチングを行うために使われます。
()
の括弧で囲まれています。
マッチしたurlが追加の引数を必要とすると仮定して、エラーメッセージを見て、与えられた引数の値が正しく見えるかどうかをまず見てください。
正しくない場合
-
値がない、または空文字列である
これは一般的に、渡している値に期待する値が含まれていないことを意味します。どこに値を代入したのか、ブレークポイントを設定して見てください。なぜこの値が正しく渡されないのか、その原因を突き止める必要があります。
-
キーワード引数にタイプミスがある
urlパターン、または構築しているurlのどちらかでこれを修正してください。
正しければ
-
正規表現のデバッグ
などのサイトを利用することができます。 regexr あなたのパターンがあなたが作成していると思うURLに一致するかどうかを迅速にテストするために、上部にある正規表現フィールドにURLパターンをコピーし、それがに対して一致するべきだと思う任意のURLを含めるためにテキストエリアを使用しています。
よくある間違い
-
に対してマッチングします。
.
ワイルドカード文字またはその他の正規表現文字特定の文字をエスケープするには
\
接頭辞 -
小文字/大文字のみマッチング
のどちらかを使ってみてください。
a-Z
または\w
ではなくa-z
またはA-Z
-
-
マッチするパターンがtryしたパターンに含まれているか確認する。
もしここにない場合は、アプリを
INSTALLED_APPS
の設定(または、アプリの並び順がINSTALLED_APPS
を見る必要があるかもしれません)
Djangoのバージョン
Django 1.10 では、python のパスで url を逆引きする機能は削除されました。代わりに名前付きパスを使うべきです。
それでも問題を突き止められない場合、あなたが試したこと、調べたこと (この質問にリンクできます)、そして問題に関連するコード (マッチングしている url、関連する url パターン、django がマッチングしようとしたものを示すエラーメッセージの部分、そして場合によっては
INSTALLED_APPS
の設定が必要です。
関連
-
Django2.2エラー - AttributeError: ''str'' オブジェクトに ''decode'' 属性がない。
-
Djangoは、フォームを送信するときに403エラーに遭遇しました。CSRF 検証に失敗しました。
-
[解決済み] Djangoでファイルをアップロードする方法は?[クローズド]。
-
[解決済み] Djangoの "slug "とは何ですか?
-
[解決済み] Django のモデルで on_delete は何をするのですか?
-
[解決済み] Djangoのテンプレートからsettings.pyの定数にアクセスすることは可能ですか?
-
[解決済み】Django ORMのselect_relatedとprefetch_relatedの違いは何ですか?
-
[解決済み] models.pyでDjangoの設定変数を参照するには?
-
[解決済み] Django は静的ファイルの URL をビューで取得します。
-
[解決済み] Django の {% url %} テンプレートタグでクエリパラメータを渡すことは可能でしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
django store to databaseは現地時間より8時間短い?(2021-05-12更新)
-
django のクエリセット操作
-
Djangoキャッシュの説明
-
[解決済み] pipと要件ファイルを使って、特定のパッケージをアップグレードするにはどうすればよいですか?
-
[解決済み] Django の管理者パスワードをリセットする方法は?
-
[解決済み] Django で完全な/絶対的な URL (ドメイン付き) を取得するにはどうすればよいですか?
-
[解決済み】Djangoでモデルインスタンスをシリアライズする方法は?
-
[解決済み] django で複数のオブジェクトを削除する
-
[解決済み] django テンプレートで "ブロック" を繰り返す方法
-
[解決済み] Django admin: データベースフィールドを持たないカスタム list_display フィールドの1つでソートする方法