MeWrite Docs

Django: Reverse for 'name' not found

DjangoでURL逆引きに失敗した際のエラー原因と解決策

概要

DjangoでURL名を使った逆引きが失敗した際に発生するエラーです。

エラーメッセージ

``` django.urls.exceptions.NoReverseMatch: Reverse for ‘user_detail’ not found. ‘user_detail’ is not a valid view function or pattern name. ```

原因

  1. URL名の不一致: name引数の誤り
  2. app_name の未設定: 名前空間が必要
  3. 引数の不足: 必要なパラメータが渡されていない
  4. urls.py の読み込み忘れ: include()の欠落

解決策

1. URL定義を確認

```python

urls.py

from django.urls import path from . import views

app_name = ‘users’ # 名前空間

urlpatterns = [ path(’’, views.user_list, name=‘user_list’), path(’int:pk/’, views.user_detail, name=‘user_detail’), ] ```

2. 正しいURL逆引き

```python from django.urls import reverse

名前空間あり

url = reverse(‘users:user_detail’, kwargs={‘pk’: 1})

名前空間なし

url = reverse(‘user_detail’, args=[1]) ```

3. テンプレートでの使用

```html

詳細

次へ ```

4. プロジェクトのurls.pyを確認

```python

project/urls.py

from django.urls import path, include

urlpatterns = [ path(‘users/’, include(‘users.urls’, namespace=‘users’)), ] ```

5. デバッグ方法

```python

manage.py shell

from django.urls import get_resolver

登録されたURLを確認

resolver = get_resolver() for pattern in resolver.url_patterns: print(pattern) ```

よくある間違い

  • app_name と namespace の両方を指定しない
  • 引数の名前(pk vs id)の不一致
  • URLパターンの正規表現エラー

関連エラー

関連エラー

Python の他のエラー

最終更新: 2025-12-10